Packages
caffeine_lang
0.0.23
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@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/3]).
-file("src/caffeine_lang/compiler.gleam", 8).
-spec compile(binary(), binary(), binary()) -> nil.
compile(Specification_directory, Instantiation_directory, Output_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>>
),
gleam_stdlib:println(
<<"\tOutput directory: "/utf8, Output_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️⃣ Resolving SLOs..."/utf8>>),
Resolved_slos = caffeine_lang@phase_4@slo_resolver:resolve_slos(
Organization
),
gleam_stdlib:println(<<"Resolved SLOs successfully!"/utf8>>),
case Resolved_slos of
{ok, Resolved_slos@1} ->
gleam_stdlib:println(<<"5️⃣ Generating..."/utf8>>),
_ = caffeine_lang@phase_5@terraform@generator:generate(
Resolved_slos@1,
Output_directory
),
gleam_stdlib:println(
<<"🎉Generated successfully!"/utf8>>
);
{error, E} ->
gleam_stdlib:println_error(E)
end;
{error, E@1} ->
case E@1 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@2} ->
gleam_stdlib:println_error(E@2)
end.