Current section

Files

Jump to
caffeine_lang src caffeine_lang@phase_5@terraform@generator.erl
Raw

src/caffeine_lang@phase_5@terraform@generator.erl

-module(caffeine_lang@phase_5@terraform@generator).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/phase_5/terraform/generator.gleam").
-export([build_provider/1, build_backend/0, build_variables/1, build_slo_definitions/1, build_main/1, generate/2]).
-export_type([supported_provider/0]).
-type supported_provider() :: datadog.
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 19).
-spec do_build_provider(supported_provider()) -> binary().
do_build_provider(Provider) ->
case Provider of
datadog ->
caffeine_lang@phase_5@terraform@datadog:provider()
end.
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 12).
-spec build_provider(list(supported_provider())) -> binary().
build_provider(Providers) ->
_pipe = Providers,
_pipe@1 = gleam@list:unique(_pipe),
_pipe@2 = gleam@list:map(_pipe@1, fun do_build_provider/1),
gleam@string:join(_pipe@2, <<"\n"/utf8>>).
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 25).
-spec build_backend() -> binary().
build_backend() ->
<<"terraform {
backend \"local\" {
path = \"terraform.tfstate\"
}
}"/utf8>>.
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 40).
-spec do_build_variables(supported_provider()) -> binary().
do_build_variables(Provider) ->
case Provider of
datadog ->
caffeine_lang@phase_5@terraform@datadog:variables()
end.
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 33).
-spec build_variables(list(supported_provider())) -> binary().
build_variables(Providers) ->
_pipe = Providers,
_pipe@1 = gleam@list:unique(_pipe),
_pipe@2 = gleam@list:map(_pipe@1, fun do_build_variables/1),
gleam@string:join(_pipe@2, <<"\n"/utf8>>).
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 46).
-spec build_slo_definitions(
list(caffeine_lang@types@resolved@resolved_slo:slo())
) -> binary().
build_slo_definitions(Slos) ->
_pipe = Slos,
_pipe@1 = gleam@list:index_map(
_pipe,
fun caffeine_lang@phase_5@terraform@datadog:full_resource_body/2
),
gleam@string:join(_pipe@1, <<"\n\n"/utf8>>).
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 52).
-spec build_main(list(caffeine_lang@types@resolved@resolved_slo:slo())) -> binary().
build_main(Slos) ->
Backend = build_backend(),
Slo_definitions = build_slo_definitions(Slos),
<<<<Backend/binary, "\n\n"/utf8>>/binary, Slo_definitions/binary>>.
-file("src/caffeine_lang/phase_5/terraform/generator.gleam", 58).
-spec generate(list(caffeine_lang@types@resolved@resolved_slo:slo()), binary()) -> {ok,
nil} |
{error, simplifile:file_error()}.
generate(Slos, Output_directory) ->
gleam_stdlib:println(
<<<<"Writing variables to file "/utf8, Output_directory/binary>>/binary,
"/variables.tf"/utf8>>
),
_ = simplifile_erl:delete(<<Output_directory/binary, "/variables.tf"/utf8>>),
_ = simplifile:create_file(
<<Output_directory/binary, "/variables.tf"/utf8>>
),
_ = simplifile:append(
<<Output_directory/binary, "/variables.tf"/utf8>>,
build_variables([datadog])
),
gleam_stdlib:println(
<<<<"Writing providers to file "/utf8, Output_directory/binary>>/binary,
"/providers.tf"/utf8>>
),
_ = simplifile_erl:delete(<<Output_directory/binary, "/providers.tf"/utf8>>),
_ = simplifile:create_file(
<<Output_directory/binary, "/providers.tf"/utf8>>
),
_ = simplifile:append(
<<Output_directory/binary, "/providers.tf"/utf8>>,
build_provider([datadog])
),
gleam_stdlib:println(
<<<<"Writing main to file "/utf8, Output_directory/binary>>/binary,
"/main.tf"/utf8>>
),
_ = simplifile_erl:delete(<<Output_directory/binary, "/main.tf"/utf8>>),
_ = simplifile:create_file(<<Output_directory/binary, "/main.tf"/utf8>>),
_ = simplifile:append(
<<Output_directory/binary, "/main.tf"/utf8>>,
build_main(Slos)
),
{ok, nil}.