Current section
Files
Jump to
Current section
Files
src/eensy_dev_tools@cli.erl
-module(eensy_dev_tools@cli).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([run/2, return/1, throw/1, from_result/1, do/2, in/1, map/2, 'try'/2, log/2, success/2, notify/2, mute/0, unmute/0, get_config/0, get_name/0, get_flags/0, get_config_value/5, get_int/4, get_string/4, get_bool/4]).
-export_type([cli/1, env/0, spinner_status/0]).
-opaque cli(OOP) :: {cli,
fun((env()) -> {env(),
{ok, OOP} | {error, eensy_dev_tools@error:error()}})}.
-type env() :: {env,
boolean(),
spinner_status(),
glint:flags(),
eensy_dev_tools@project:config()}.
-type spinner_status() :: {running, spinner:spinner(), binary()} | paused.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 35).
-spec run(cli(OOQ), glint:flags()) -> {ok, OOQ} |
{error, eensy_dev_tools@error:error()}.
run(Step, Flags) ->
gleam@result:'try'(
eensy_dev_tools@project:config(),
fun(Config) ->
Env = {env, false, paused, Flags, Config},
{Env@1, Result} = (erlang:element(2, Step))(Env),
case erlang:element(3, Env@1) of
{running, Spinner, _} ->
spinner:stop(Spinner);
paused ->
nil
end,
case {Result, erlang:element(3, Env@1)} of
{{error, _}, {running, _, Message}} ->
gleam@io:println(
<<"❌ "/utf8,
(gleam_community@ansi:red(Message))/binary>>
);
{{error, _}, _} ->
nil;
{{ok, _}, _} ->
nil
end,
Result
end
).
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 59).
-spec return(OOU) -> cli(OOU).
return(Value) ->
{cli, fun(Env) -> {Env, {ok, Value}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 67).
-spec throw(eensy_dev_tools@error:error()) -> cli(any()).
throw(Error) ->
{cli, fun(Env) -> {Env, {error, Error}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 73).
-spec from_result({ok, OOY} | {error, eensy_dev_tools@error:error()}) -> cli(OOY).
from_result(Result) ->
{cli, fun(Env) -> {Env, Result} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 83).
-spec do(cli(OPC), fun((OPC) -> cli(OPE))) -> cli(OPE).
do(Step, Next) ->
{cli,
fun(Env) ->
{Env@1, Result} = (erlang:element(2, Step))(Env),
case Result of
{ok, Value} ->
(erlang:element(2, Next(Value)))(Env@1);
{error, Error} ->
case erlang:element(3, Env@1) of
{running, Spinner, _} ->
spinner:stop(Spinner);
paused ->
nil
end,
{Env@1, {error, Error}}
end
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 100).
-spec in(fun(() -> OPH)) -> cli(OPH).
in(Value) ->
{cli, fun(Env) -> {Env, {ok, Value()}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 106).
-spec map(cli(OPJ), fun((OPJ) -> OPL)) -> cli(OPL).
map(Step, Next) ->
{cli,
fun(Env) ->
{Env@1, Result} = (erlang:element(2, Step))(Env),
Result@1 = gleam@result:map(Result, Next),
{Env@1, Result@1}
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 116).
-spec 'try'(
{ok, OPN} | {error, eensy_dev_tools@error:error()},
fun((OPN) -> cli(OPQ))
) -> cli(OPQ).
'try'(Result, Next) ->
{cli, fun(Env) -> case Result of
{ok, A} ->
(erlang:element(2, Next(A)))(Env);
{error, Error} ->
case erlang:element(3, Env) of
{running, Spinner, _} ->
spinner:stop(Spinner);
paused ->
nil
end,
{Env, {error, Error}}
end end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 136).
-spec log(binary(), fun(() -> cli(OPT))) -> cli(OPT).
log(Message, Next) ->
{cli,
fun(Env) ->
Env@1 = case erlang:element(2, Env) of
true ->
Env;
false ->
erlang:setelement(3, Env, case erlang:element(3, Env) of
paused ->
{running,
begin
_pipe = spinner:new(Message),
_pipe@1 = spinner:with_colour(
_pipe,
fun gleam_community@ansi:magenta/1
),
_pipe@2 = spinner:with_frames(
_pipe@1,
[<<"⠋"/utf8>>,
<<"⠙"/utf8>>,
<<"⠹"/utf8>>,
<<"⠸"/utf8>>,
<<"⠼"/utf8>>,
<<"⠴"/utf8>>,
<<"⠦"/utf8>>,
<<"⠧"/utf8>>,
<<"⠇"/utf8>>,
<<"⠏"/utf8>>]
),
spinner:start(_pipe@2)
end,
Message};
{running, Spinner, _} ->
spinner:set_text(Spinner, Message),
{running, Spinner, Message}
end)
end,
(erlang:element(2, Next()))(Env@1)
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 164).
-spec success(binary(), fun(() -> cli(OPW))) -> cli(OPW).
success(Message, Next) ->
{cli,
fun(Env) ->
Env@1 = erlang:setelement(3, Env, case erlang:element(3, Env) of
paused ->
paused;
{running, Spinner, _} ->
spinner:stop(Spinner),
paused
end),
case erlang:element(2, Env@1) of
true ->
nil;
false ->
gleam@io:println(
<<"✅ "/utf8,
(gleam_community@ansi:green(Message))/binary>>
)
end,
(erlang:element(2, Next()))(Env@1)
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 186).
-spec notify(binary(), fun(() -> cli(OPZ))) -> cli(OPZ).
notify(Message, Next) ->
{cli,
fun(Env) ->
Env@1 = erlang:setelement(3, Env, case erlang:element(3, Env) of
paused ->
paused;
{running, Spinner, _} ->
spinner:stop(Spinner),
paused
end),
case erlang:element(2, Env@1) of
true ->
nil;
false ->
gleam@io:println(gleam_community@ansi:bright_cyan(Message))
end,
(erlang:element(2, Next()))(Env@1)
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 208).
-spec mute() -> cli(nil).
mute() ->
{cli, fun(Env) -> {erlang:setelement(2, Env, true), {ok, nil}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 214).
-spec unmute() -> cli(nil).
unmute() ->
{cli, fun(Env) -> {erlang:setelement(2, Env, false), {ok, nil}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 222).
-spec get_config() -> cli(eensy_dev_tools@project:config()).
get_config() ->
{cli, fun(Env) -> {Env, {ok, erlang:element(5, Env)}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 228).
-spec get_name() -> cli(binary()).
get_name() ->
{cli,
fun(Env) -> {Env, {ok, erlang:element(2, erlang:element(5, Env))}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 236).
-spec get_flags() -> cli(glint:flags()).
get_flags() ->
{cli, fun(Env) -> {Env, {ok, erlang:element(4, Env)}} end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 242).
-spec get_config_value(
binary(),
OQH,
list(binary()),
fun((gleam@dict:dict(binary(), tom:toml()), list(binary())) -> {ok, OQH} |
{error, any()}),
fun((glint:flags()) -> {ok, OQH} | {error, any()})
) -> cli(OQH).
get_config_value(Name, Fallback, Namespace, Toml, Flag) ->
{cli,
fun(Env) ->
Toml_path = gleam@list:concat(
[[<<"lustre-dev"/utf8>>], Namespace, [Name]]
),
Value = begin
_pipe = gleam@result:'or'(
gleam@result:nil_error(Flag(erlang:element(4, Env))),
gleam@result:nil_error(
Toml(
erlang:element(4, erlang:element(5, Env)),
Toml_path
)
)
),
gleam@result:unwrap(_pipe, Fallback)
end,
{Env, {ok, Value}}
end}.
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 261).
-spec get_int(
binary(),
integer(),
list(binary()),
fun((glint:flags()) -> {ok, integer()} | {error, any()})
) -> cli(integer()).
get_int(Name, Fallback, Namespace, Flag) ->
get_config_value(Name, Fallback, Namespace, fun tom:get_int/2, Flag).
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 270).
-spec get_string(
binary(),
binary(),
list(binary()),
fun((glint:flags()) -> {ok, binary()} | {error, any()})
) -> cli(binary()).
get_string(Name, Fallback, Namespace, Flag) ->
get_config_value(Name, Fallback, Namespace, fun tom:get_string/2, Flag).
-file("/Users/raynerdls/ray.delossantos/apps/eensy-repos/packages/eensy_dev_tools/src/eensy_dev_tools/cli.gleam", 279).
-spec get_bool(
binary(),
boolean(),
list(binary()),
fun((glint:flags()) -> {ok, boolean()} | {error, any()})
) -> cli(boolean()).
get_bool(Name, Fallback, Namespace, Flag) ->
get_config_value(Name, Fallback, Namespace, fun tom:get_bool/2, Flag).