Current section

Files

Jump to
caffeine_lang src caffeine_lang@codegen@generator_utils.erl
Raw

src/caffeine_lang@codegen@generator_utils.erl

-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()}.