-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 -- [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 --target "/utf8>> ), unknown; [<<"gen"/utf8>> | _] -> gen; [<<"build"/utf8>> | _] -> build; _ -> unknown end.