Packages
caffeine_lang
2.0.3
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@cli@handler.erl
-module(caffeine_lang@cli@handler).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/cli/handler.gleam").
-export([handle_args/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/cli/handler.gleam", 138).
-spec log(caffeine_lang@core@logger:log_level(), binary()) -> nil.
log(Log_level, Message) ->
case Log_level of
verbose ->
gleam_stdlib:println(Message);
minimal ->
nil
end.
-file("src/caffeine_lang/cli/handler.gleam", 109).
-spec print_usage(caffeine_lang@core@logger:log_level()) -> nil.
print_usage(Log_level) ->
log(Log_level, <<"caffeine "/utf8, (<<"2.0.3"/utf8>>)/binary>>),
log(
Log_level,
<<"A compiler for generating reliability artifacts from service expectation definitions."/utf8>>
),
log(Log_level, <<""/utf8>>),
log(Log_level, <<"USAGE:"/utf8>>),
log(
Log_level,
<<" caffeine compile [--quiet] <blueprint_file> <expectations_directory> [output_file]"/utf8>>
),
log(Log_level, <<""/utf8>>),
log(Log_level, <<"ARGUMENTS:"/utf8>>),
log(
Log_level,
<<" [output_file] Output file path or directory (prints to stdout if omitted)"/utf8>>
),
log(Log_level, <<""/utf8>>),
log(Log_level, <<"OPTIONS:"/utf8>>),
log(
Log_level,
<<" --quiet Suppress compilation progress output"/utf8>>
),
log(Log_level, <<" -h, --help Print help information"/utf8>>),
log(Log_level, <<" -V, --version Print version information"/utf8>>).
-file("src/caffeine_lang/cli/handler.gleam", 134).
-spec print_version(caffeine_lang@core@logger:log_level()) -> nil.
print_version(Log_level) ->
log(Log_level, <<"caffeine "/utf8, (<<"2.0.3"/utf8>>)/binary>>).
-file("src/caffeine_lang/cli/handler.gleam", 145).
-spec result_to_exit_status(
{ok, nil} | {error, binary()},
caffeine_lang@core@logger:log_level()
) -> caffeine_lang@cli@exit_status_codes:exit_status_codes().
result_to_exit_status(Res, Log_level) ->
case Res of
{ok, _} ->
success;
{error, Msg} ->
log(Log_level, Msg),
failure
end.
-file("src/caffeine_lang/cli/handler.gleam", 73).
-spec compile(
binary(),
binary(),
gleam@option:option(binary()),
caffeine_lang@core@logger:log_level()
) -> caffeine_lang@cli@exit_status_codes:exit_status_codes().
compile(Blueprint_file, Expectations_dir, Output_path, Log_level) ->
Config = {compilation_config, Log_level},
_pipe@3 = begin
gleam@result:'try'(
begin
_pipe = caffeine_lang@core@compiler:compile(
Blueprint_file,
Expectations_dir,
Config
),
gleam@result:map_error(
_pipe,
fun(Err) ->
<<"Compilation error: "/utf8,
(erlang:element(2, Err))/binary>>
end
)
end,
fun(Output) -> case Output_path of
none ->
log(Log_level, Output),
{ok, nil};
{some, Path} ->
Output_file = case simplifile_erl:is_directory(Path) of
{ok, true} ->
<<Path/binary, "/main.tf"/utf8>>;
_ ->
Path
end,
_pipe@1 = simplifile:write(Output_file, Output),
_pipe@2 = gleam@result:map(
_pipe@1,
fun(_) ->
log(
Log_level,
<<"Successfully compiled to "/utf8,
Output_file/binary>>
)
end
),
gleam@result:map_error(
_pipe@2,
fun(Err@1) ->
<<"Error writing output file: "/utf8,
(gleam@string:inspect(Err@1))/binary>>
end
)
end end
)
end,
result_to_exit_status(_pipe@3, Log_level).
-file("src/caffeine_lang/cli/handler.gleam", 14).
?DOC(false).
-spec handle_args(list(binary())) -> caffeine_lang@cli@exit_status_codes:exit_status_codes().
handle_args(Args) ->
case Args of
[<<"compile"/utf8>>,
<<"--quiet"/utf8>>,
Blueprint_file,
Expectations_dir,
Output_file] ->
compile(
Blueprint_file,
Expectations_dir,
{some, Output_file},
minimal
);
[<<"compile"/utf8>>,
<<"--quiet"/utf8>>,
Blueprint_file@1,
Expectations_dir@1] ->
compile(Blueprint_file@1, Expectations_dir@1, none, minimal);
[<<"compile"/utf8>>,
Blueprint_file@2,
Expectations_dir@2,
Output_file@1] ->
compile(
Blueprint_file@2,
Expectations_dir@2,
{some, Output_file@1},
verbose
);
[<<"compile"/utf8>>, Blueprint_file@3, Expectations_dir@3] ->
compile(Blueprint_file@3, Expectations_dir@3, none, verbose);
[<<"--help"/utf8>>] ->
print_usage(verbose),
success;
[<<"-h"/utf8>>] ->
print_usage(verbose),
success;
[<<"--version"/utf8>>] ->
print_version(verbose),
success;
[<<"-V"/utf8>>] ->
print_version(verbose),
success;
[<<"--quiet"/utf8>>, <<"--help"/utf8>>] ->
print_usage(minimal),
success;
[<<"--quiet"/utf8>>, <<"-h"/utf8>>] ->
print_usage(minimal),
success;
[<<"--help"/utf8>>, <<"--quiet"/utf8>>] ->
print_usage(minimal),
success;
[<<"-h"/utf8>>, <<"--quiet"/utf8>>] ->
print_usage(minimal),
success;
[<<"--quiet"/utf8>>, <<"--version"/utf8>>] ->
print_version(minimal),
success;
[<<"--quiet"/utf8>>, <<"-V"/utf8>>] ->
print_version(minimal),
success;
[<<"--version"/utf8>>, <<"--quiet"/utf8>>] ->
print_version(minimal),
success;
[<<"-V"/utf8>>, <<"--quiet"/utf8>>] ->
print_version(minimal),
success;
[<<"--quiet"/utf8>>] ->
print_usage(minimal),
success;
[] ->
print_usage(verbose),
success;
_ ->
log(verbose, <<"Error: Invalid arguments"/utf8>>),
log(verbose, <<""/utf8>>),
print_usage(verbose),
failure
end.