Current section

Files

Jump to
libero src libero@cli.erl
Raw

src/libero@cli.erl

-module(libero@cli).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/libero/cli.gleam").
-export([parse_command/0]).
-export_type([command/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(
" CLI command router for the Libero framework.\n"
"\n"
" Usage: gleam run -m libero -- <command> [args]\n"
" Commands: new, add, gen, build\n"
).
-type command() :: {new, binary()} |
{add, binary(), binary()} |
gen |
build |
unknown.
-file("src/libero/cli.gleam", 18).
?DOC(" Parse CLI arguments into a Command.\n").
-spec parse_command() -> command().
parse_command() ->
Args = erlang:element(4, argv:load()),
case Args of
[<<"new"/utf8>>, Name | _] ->
{new, Name};
[<<"add"/utf8>>, Name@1, <<"--target"/utf8>>, Target | _] ->
{add, Name@1, Target};
[<<"add"/utf8>>, _ | _] ->
gleam_stdlib:println_error(<<"error: --target is required"/utf8>>),
gleam_stdlib:println_error(
<<" Usage: gleam run -m libero -- add <name> --target <javascript|erlang>"/utf8>>
),
unknown;
[<<"gen"/utf8>> | _] ->
gen;
[<<"build"/utf8>> | _] ->
build;
_ ->
unknown
end.