Current section
Files
Jump to
Current section
Files
src/gladvent@internal@cmd.erl
-module(gladvent@internal@cmd).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([root/0, src_root/0, src_dir/1, exec/4, year_flag/0]).
-export_type([timing/0]).
-type timing() :: endless | {ending, integer()}.
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 17).
-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("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 13).
-spec root() -> binary().
root() ->
find_root(<<"."/utf8>>).
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 26).
-spec src_root() -> binary().
src_root() ->
filepath:join(root(), <<"src"/utf8>>).
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 30).
-spec src_dir(integer()) -> binary().
src_dir(Year) ->
filepath:join(
src_root(),
<<"aoc_"/utf8, (gleam@int:to_string(Year))/binary>>
).
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 45).
-spec exec(
list(integer()),
timing(),
fun((integer()) -> PEE),
fun(({integer(), {ok, PEE} | {error, binary()}}) -> PEH)
) -> list(PEH).
exec(Days, Timing, Do, Collect) ->
_pipe@4 = case Timing of
endless ->
_pipe = Days,
_pipe@1 = gleam@list:map(
_pipe,
fun(Day) ->
{Day, gleam@otp@task:async(fun() -> Do(Day) end)}
end
),
(fun(Tasks) ->
gleam@list:map(
Tasks,
fun(Tup) ->
gleam@pair:map_second(
Tup,
fun(T) -> {ok, gleam@otp@task:await_forever(T)} end
)
end
)
end)(_pipe@1);
{ending, Timeout} ->
_pipe@2 = parallel_map:list_pmap(
Days,
Do,
match_schedulers_online,
Timeout
),
_pipe@3 = gleam@list:map(
_pipe@2,
fun(_capture) ->
gleam@result:replace_error(
_capture,
<<"failed to execute task"/utf8>>
)
end
),
gleam@list:zip(Days, _pipe@3)
end,
gleam@list:map(_pipe@4, Collect).
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 79).
-spec current_year() -> integer().
current_year() ->
A = erlang:element(1, erlang:localtime()),
erlang:element(1, A).
-file("/home/runner/work/gladvent/gladvent/src/gladvent/internal/cmd.gleam", 84).
-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
).