Current section

Files

Jump to
caffeine_lang src caffeine_lang@compiler.erl
Raw

src/caffeine_lang@compiler.erl

-module(caffeine_lang@compiler).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/compiler.gleam").
-export([compile/2]).
-file("src/caffeine_lang/compiler.gleam", 6).
-spec compile(binary(), binary()) -> nil.
compile(Specification_directory, Instantiation_directory) ->
gleam_stdlib:println(<<"1️⃣ Compiling..."/utf8>>),
gleam_stdlib:println(
<<"\tSpecification directory: "/utf8, Specification_directory/binary>>
),
gleam_stdlib:println(
<<"\tInstantiation directory: "/utf8, Instantiation_directory/binary>>
),
Organization_result = caffeine_lang@phase_2@linker@organization@linker:link_specification_and_instantiation(
Specification_directory,
Instantiation_directory
),
case Organization_result of
{ok, Organization} ->
gleam_stdlib:println(<<"2️⃣ Parsed and linked successfully!"/utf8>>),
Result = caffeine_lang@phase_3@semantic:perform_semantic_analysis(
Organization
),
case Result of
{ok, _} ->
gleam_stdlib:println(
<<"3️⃣ Semantic analysis successful!"/utf8>>
),
gleam_stdlib:println(<<"4️⃣ Generating..."/utf8>>),
_ = caffeine_lang@phase_5@smoke_test:generate(
Organization,
<<"test/artifacts/some_organization"/utf8>>
),
gleam_stdlib:println(<<"🎉Generated successfully!"/utf8>>);
{error, E} ->
case E of
{undefined_service_error, _} ->
gleam_stdlib:println_error(
<<"Undefined service error."/utf8>>
);
{undefined_sli_type_error, _} ->
gleam_stdlib:println_error(
<<"Undefined sli type error."/utf8>>
);
{invalid_slo_threshold_error, _} ->
gleam_stdlib:println_error(
<<"Invalid sli threshold error."/utf8>>
);
{duplicate_service_error, _} ->
gleam_stdlib:println_error(
<<"Duplicate service error."/utf8>>
)
end
end;
{error, E@1} ->
gleam_stdlib:println_error(E@1)
end.