Current section

Files

Jump to
libero src libero.erl
Raw

src/libero.erl

-module(libero).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/libero.gleam").
-export([main/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(
" Libero v4 framework CLI.\n"
"\n"
" Usage: gleam run -m libero -- <command> [args]\n"
" Commands: new, add, gen, build\n"
).
-file("src/libero.gleam", 13).
-spec main() -> nil.
main() ->
nil = libero_ffi:trap_signals(),
case libero@cli:parse_command() of
{new, Name, Database} ->
case libero@cli@new:scaffold(Name, Database) of
{ok, nil} ->
gleam_stdlib:println(
<<<<"Created "/utf8, Name/binary>>/binary,
". Happy hacking!"/utf8>>
);
{error, Reason} ->
gleam_stdlib:println_error(
<<"error: "/utf8, Reason/binary>>
)
end,
nil;
{add, Name@1, Target} ->
case libero@cli@add:add_client(<<"."/utf8>>, Name@1, Target) of
{ok, nil} ->
gleam_stdlib:println(
<<<<<<<<"Added client "/utf8, Name@1/binary>>/binary,
" (target: "/utf8>>/binary,
Target/binary>>/binary,
")"/utf8>>
);
{error, Reason@1} ->
gleam_stdlib:println_error(
<<"error: "/utf8, Reason@1/binary>>
)
end,
nil;
gen ->
case libero@cli@gen:run(<<"."/utf8>>) of
{ok, nil} ->
nil;
{error, Msg} ->
gleam_stdlib:println_error(<<"error: "/utf8, Msg/binary>>),
_ = erlang:halt(1),
nil
end;
build ->
case libero@cli@build:run(<<"."/utf8>>) of
{ok, nil} ->
nil;
{error, Msg@1} ->
gleam_stdlib:println_error(<<"error: "/utf8, Msg@1/binary>>),
_ = erlang:halt(1),
nil
end;
unknown ->
gleam_stdlib:println(
<<"Libero — typed RPC framework for Gleam"/utf8>>
),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(
<<"Usage: gleam run -m libero -- <command>"/utf8>>
),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<"Commands:"/utf8>>),
gleam_stdlib:println(
<<" new <name> [--database pg|sqlite] Create a new project"/utf8>>
),
gleam_stdlib:println(
<<" add <name> --target <target> Add a client"/utf8>>
),
gleam_stdlib:println(
<<" gen Regenerate stubs"/utf8>>
),
gleam_stdlib:println(
<<" build Gen + build server + all clients"/utf8>>
),
nil
end.