-module(glipt@cmd@run).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/glipt/cmd/run.gleam").
-export([execute/1]).
-file("src/glipt/cmd/run.gleam", 35).
-spec parse_args(list(binary()), glipt@target:target(), binary()) -> {glipt@target:target(),
binary(),
binary(),
list(binary())}.
parse_args(Args, T, Func) ->
case Args of
[<<"--target"/utf8>>, <<"erlang"/utf8>> | Rest] ->
parse_args(Rest, erlang, Func);
[<<"--target"/utf8>>, <<"javascript"/utf8>> | Rest@1] ->
parse_args(Rest@1, java_script, Func);
[<<"-f"/utf8>>, F | Rest@2] ->
parse_args(Rest@2, T, F);
[File, <<"--"/utf8>> | Script_args] ->
{T, Func, File, Script_args};
[File@1 | Script_args@1] ->
{T, Func, File@1, Script_args@1};
_ ->
{T, Func, <<""/utf8>>, []}
end.
-file("src/glipt/cmd/run.gleam", 6).
-spec execute(list(binary())) -> nil.
execute(Args) ->
{T, Func, File, Script_args} = parse_args(Args, erlang, <<"main"/utf8>>),
case File of
<<""/utf8>> ->
gleam_stdlib:println_error(
<<"Error: no script file specified"/utf8>>
),
gleam_stdlib:println_error(
<<"Usage: glipt run [--target erlang|javascript] [-f function] <file.gleam> [-- args...]"/utf8>>
);
P ->
Opts = {run_options, P, T, Func, Script_args},
case glipt@runner:run(Opts) of
{ok, Output} ->
gleam_stdlib:print(Output);
{error, {file_error, E}} ->
gleam_stdlib:println_error(
<<"File error: "/utf8,
(gleam@string:inspect(E))/binary>>
);
{error, {build_error, Msg}} ->
gleam_stdlib:println_error(
<<"Build error:\n"/utf8, Msg/binary>>
);
{error, {run_error, Msg@1}} ->
gleam_stdlib:println_error(
<<"Run error:\n"/utf8, Msg@1/binary>>
)
end
end.