-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.