-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([dd_metric_safe/1, render_terraform_config/4, build_source_comment/1, render_resource_to_string/1, 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", 35). -spec is_dd_metric_char(binary()) -> boolean(). is_dd_metric_char(G) -> case G of <<"."/utf8>> -> true; <<"_"/utf8>> -> true; _ -> case gleam@string:to_utf_codepoints(G) of [Cp] -> N = gleam_stdlib:identity(Cp), (((N >= 48) andalso (N =< 57)) orelse ((N >= 65) andalso (N =< 90))) orelse ((N >= 97) andalso (N =< 122)); _ -> false end end. -file("src/caffeine_lang/codegen/generator_utils.gleam", 23). ?DOC(false). -spec dd_metric_safe(binary()) -> binary(). dd_metric_safe(S) -> _pipe = S, _pipe@1 = gleam@string:to_graphemes(_pipe), _pipe@2 = gleam@list:map(_pipe@1, fun(G) -> case is_dd_metric_char(G) of true -> G; false -> <<"_"/utf8>> end end), erlang:list_to_binary(_pipe@2). -file("src/caffeine_lang/codegen/generator_utils.gleam", 63). ?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", 85). ?DOC(false). -spec build_source_comment( caffeine_lang@linker@ir:intermediate_representation_meta_data() ) -> binary(). build_source_comment(Metadata) -> <<<<<<<<<<<<<<<<<<<<"# Caffeine: "/utf8, (erlang:element( 2, erlang:element(3, Metadata) ))/binary>>/binary, "."/utf8>>/binary, (erlang:element( 2, erlang:element(6, Metadata) ))/binary>>/binary, "."/utf8>>/binary, (erlang:element(2, erlang:element(4, Metadata)))/binary>>/binary, "."/utf8>>/binary, (erlang:element(2, erlang:element(2, Metadata)))/binary>>/binary, " (measurement: "/utf8>>/binary, (erlang:element(2, erlang:element(5, Metadata)))/binary>>/binary, ")"/utf8>>. -file("src/caffeine_lang/codegen/generator_utils.gleam", 103). ?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), codegen_ffi:drop_end_codeunits(_pipe, 1). -file("src/caffeine_lang/codegen/generator_utils.gleam", 121). ?DOC(false). -spec resolution_error(binary(), binary()) -> caffeine_lang@errors:compilation_error(). resolution_error(Vendor_name, Msg) -> caffeine_lang@errors:generator_terraform_resolution_error(Vendor_name, Msg).