Current section

Files

Jump to
caffeine_lang src caffeine_lang.erl
Raw

src/caffeine_lang.erl

-module(caffeine_lang).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang.gleam").
-export([main/0]).
-file("src/caffeine_lang.gleam", 5).
-spec print_usage() -> nil.
print_usage() ->
gleam_stdlib:println(<<"Caffeine SLI/SLO compiler"/utf8>>),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<"Usage:"/utf8>>),
gleam_stdlib:println(
<<" caffeine compile <specification_directory> <instantiation_directory> <output_directory>"/utf8>>
),
gleam_stdlib:println(<<""/utf8>>),
gleam_stdlib:println(<<"Arguments:"/utf8>>),
gleam_stdlib:println(
<<" specification_directory Directory containing specification files"/utf8>>
),
gleam_stdlib:println(
<<" instantiation_directory Directory containing instantiation files"/utf8>>
),
gleam_stdlib:println(
<<" output_directory Directory to output compiled files"/utf8>>
).
-file("src/caffeine_lang.gleam", 23).
-spec main() -> nil.
main() ->
Args = erlang:element(4, argv:load()),
case Args of
[<<"compile"/utf8>>, Spec_dir, Inst_dir, Output_dir] ->
caffeine_lang@compiler:compile(Spec_dir, Inst_dir, Output_dir);
[<<"compile"/utf8>>] ->
gleam_stdlib:println_error(
<<"Error: compile command requires 3 arguments"/utf8>>
),
print_usage();
[<<"compile"/utf8>> | _] ->
gleam_stdlib:println_error(
<<"Error: compile command requires exactly 3 arguments"/utf8>>
),
print_usage();
[<<"--help"/utf8>>] ->
print_usage();
[<<"-h"/utf8>>] ->
print_usage();
[] ->
print_usage();
_ ->
gleam_stdlib:println_error(<<"Error: unknown command"/utf8>>),
print_usage()
end.