Current section

Files

Jump to
gladvent src gladvent@internal@cmd.erl
Raw

src/gladvent@internal@cmd.erl

-module(gladvent@internal@cmd).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/gladvent/internal/cmd.gleam").
-export([root/0, src_root/0, src_dir/1, exec/4, year_flag/0]).
-export_type([timing/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type timing() :: endless | {ending, integer()}.
-file("src/gladvent/internal/cmd.gleam", 15).
?DOC(false).
-spec find_root(binary()) -> binary().
find_root(Path) ->
Toml = filepath:join(Path, <<"gleam.toml"/utf8>>),
case simplifile_erl:is_file(Toml) of
{ok, false} ->
find_root(filepath:join(<<".."/utf8>>, Path));
{error, _} ->
find_root(filepath:join(<<".."/utf8>>, Path));
{ok, true} ->
Path
end.
-file("src/gladvent/internal/cmd.gleam", 11).
?DOC(false).
-spec root() -> binary().
root() ->
find_root(<<"."/utf8>>).
-file("src/gladvent/internal/cmd.gleam", 24).
?DOC(false).
-spec src_root() -> binary().
src_root() ->
filepath:join(root(), <<"src"/utf8>>).
-file("src/gladvent/internal/cmd.gleam", 28).
?DOC(false).
-spec src_dir(integer()) -> binary().
src_dir(Year) ->
filepath:join(
src_root(),
<<"aoc_"/utf8, (erlang:integer_to_binary(Year))/binary>>
).
-file("src/gladvent/internal/cmd.gleam", 43).
?DOC(false).
-spec exec(
list(integer()),
timing(),
fun((integer()) -> NNO),
fun(({integer(), {ok, NNO} | {error, binary()}}) -> NNR)
) -> list(NNR).
exec(Days, Timing, Do, Collect) ->
_pipe = case Timing of
endless ->
86400;
{ending, Timeout} ->
Timeout
end,
_pipe@1 = parallel_map:list_pmap(Days, Do, match_schedulers_online, _pipe),
_pipe@2 = gleam@list:map(
_pipe@1,
fun(_capture) ->
gleam@result:replace_error(
_capture,
<<"failed to execute task"/utf8>>
)
end
),
_pipe@3 = gleam@list:zip(Days, _pipe@2),
gleam@list:map(_pipe@3, Collect).
-file("src/gladvent/internal/cmd.gleam", 63).
?DOC(false).
-spec current_year() -> integer().
current_year() ->
A = erlang:element(1, erlang:localtime()),
erlang:element(1, A).
-file("src/gladvent/internal/cmd.gleam", 68).
?DOC(false).
-spec year_flag() -> glint:flag(integer()).
year_flag() ->
glint:flag_constraint(
begin
_pipe = glint:int_flag(<<"year"/utf8>>),
glint:flag_default(_pipe, current_year())
end,
fun(Year) -> case Year < 2015 of
true ->
snag:error(
<<"advent of code did not exist prior to 2015, did you mistype?"/utf8>>
);
false ->
{ok, Year}
end end
).