-module(caffeine_lang@codegen@generator_utils). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/caffeine_lang/codegen/generator_utils.gleam"). -export([render_terraform_config/4, build_source_comment/1, render_resource_to_string/1, build_description/1, require_slo_fields/2, require_evaluation/3, resolve_cql_expression/4, resolution_error/2]). -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/codegen/generator_utils.gleam", 21). ?DOC(false). -spec render_terraform_config( list(terra_madre@terraform:resource()), terra_madre@terraform:terraform_settings(), list(terra_madre@terraform:provider()), list(terra_madre@terraform:variable()) ) -> binary(). render_terraform_config(Resources, Settings, Providers, Variables) -> Config = {config, {some, Settings}, Providers, Resources, [], Variables, [], [], []}, terra_madre@render:render_config(Config). -file("src/caffeine_lang/codegen/generator_utils.gleam", 43). ?DOC(false). -spec build_source_comment( caffeine_lang@linker@ir:intermediate_representation_meta_data() ) -> binary(). build_source_comment(Metadata) -> <<<<<<<<<<<<<<<<<<<<"# Caffeine: "/utf8, (erlang:element(3, Metadata))/binary>>/binary, "."/utf8>>/binary, (erlang:element(6, Metadata))/binary>>/binary, "."/utf8>>/binary, (erlang:element(4, Metadata))/binary>>/binary, "."/utf8>>/binary, (erlang:element(2, Metadata))/binary>>/binary, " (blueprint: "/utf8>>/binary, (erlang:element(5, Metadata))/binary>>/binary, ")"/utf8>>. -file("src/caffeine_lang/codegen/generator_utils.gleam", 61). ?DOC(false). -spec render_resource_to_string(terra_madre@terraform:resource()) -> binary(). render_resource_to_string(Resource) -> Config = {config, none, [], [Resource], [], [], [], [], []}, _pipe = terra_madre@render:render_config(Config), gleam@string:drop_end(_pipe, 1). -file("src/caffeine_lang/codegen/generator_utils.gleam", 80). ?DOC(false). -spec build_description(caffeine_lang@linker@ir:intermediate_representation()) -> binary(). build_description(Ir) -> Runbook = case caffeine_lang@linker@ir:get_slo_fields(erlang:element(6, Ir)) of {some, Slo} -> erlang:element(7, Slo); none -> none end, case Runbook of {some, Url} -> <<<<"[Runbook]("/utf8, Url/binary>>/binary, ")"/utf8>>; none -> <<<<<<<<<<<<"Managed by Caffeine ("/utf8, (erlang:element(3, erlang:element(2, Ir)))/binary>>/binary, "/"/utf8>>/binary, (erlang:element(6, erlang:element(2, Ir)))/binary>>/binary, "/"/utf8>>/binary, (erlang:element(4, erlang:element(2, Ir)))/binary>>/binary, ")"/utf8>> end. -file("src/caffeine_lang/codegen/generator_utils.gleam", 101). ?DOC(false). -spec require_slo_fields( caffeine_lang@linker@ir:intermediate_representation(), binary() ) -> {ok, caffeine_lang@linker@ir:slo_fields()} | {error, caffeine_lang@errors:compilation_error()}. require_slo_fields(Ir, Vendor_name) -> _pipe = caffeine_lang@linker@ir:get_slo_fields(erlang:element(6, Ir)), gleam@option:to_result( _pipe, {generator_terraform_resolution_error, Vendor_name, <<<<"expectation '"/utf8, (caffeine_lang@linker@ir:ir_to_identifier(Ir))/binary>>/binary, "' - missing SLO artifact data"/utf8>>, caffeine_lang@errors:empty_context()} ). -file("src/caffeine_lang/codegen/generator_utils.gleam", 117). ?DOC(false). -spec require_evaluation( caffeine_lang@linker@ir:slo_fields(), caffeine_lang@linker@ir:intermediate_representation(), binary() ) -> {ok, binary()} | {error, caffeine_lang@errors:compilation_error()}. require_evaluation(Slo, Ir, Vendor_name) -> _pipe = erlang:element(5, Slo), gleam@option:to_result( _pipe, {generator_terraform_resolution_error, Vendor_name, <<<<<<<<"expectation '"/utf8, (caffeine_lang@linker@ir:ir_to_identifier(Ir))/binary>>/binary, "' - missing evaluation for "/utf8>>/binary, Vendor_name/binary>>/binary, " SLO"/utf8>>, caffeine_lang@errors:empty_context()} ). -file("src/caffeine_lang/codegen/generator_utils.gleam", 136). ?DOC(false). -spec resolve_cql_expression( binary(), gleam@dict:dict(binary(), binary()), caffeine_lang@linker@ir:intermediate_representation(), binary() ) -> {ok, binary()} | {error, caffeine_lang@errors:compilation_error()}. resolve_cql_expression(Evaluation_expr, Indicators, Ir, Vendor_name) -> _pipe = caffeine_query_language@generator:resolve_slo_to_expression( Evaluation_expr, Indicators ), gleam@result:map_error( _pipe, fun(Err) -> {generator_terraform_resolution_error, Vendor_name, <<<<<<"expectation '"/utf8, (caffeine_lang@linker@ir:ir_to_identifier(Ir))/binary>>/binary, "' - "/utf8>>/binary, Err/binary>>, caffeine_lang@errors:empty_context()} end ). -file("src/caffeine_lang/codegen/generator_utils.gleam", 154). ?DOC(false). -spec resolution_error(binary(), binary()) -> caffeine_lang@errors:compilation_error(). resolution_error(Vendor_name, Msg) -> {generator_terraform_resolution_error, Vendor_name, Msg, caffeine_lang@errors:empty_context()}.