Current section

Files

Jump to
caffeine_lang src caffeine_lang@linker@ir.erl
Raw

src/caffeine_lang@linker@ir.erl

-module(caffeine_lang@linker@ir).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/linker/ir.gleam").
-export([promote/1, ir_to_identifier/1, get_slo_fields/1, get_dependency_fields/1, slo_only/1, dependency_only/1, slo_with_dependency/2, update_slo_fields/2]).
-export_type([linked/0, deps_validated/0, resolved/0, slo_fields/0, dependency_fields/0, artifact_data/0, artifact_fields/0, intermediate_representation/1, intermediate_representation_meta_data/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type linked() :: any().
-type deps_validated() :: any().
-type resolved() :: any().
-type slo_fields() :: {slo_fields,
float(),
gleam@dict:dict(binary(), binary()),
integer(),
gleam@option:option(binary()),
list({binary(), binary()}),
gleam@option:option(binary())}.
-type dependency_fields() :: {dependency_fields,
gleam@dict:dict(caffeine_lang@linker@artifacts:dependency_relation_type(), list(binary())),
list({binary(), binary()})}.
-type artifact_data() :: {artifact_data,
gleam@dict:dict(caffeine_lang@linker@artifacts:artifact_type(), artifact_fields())}.
-type artifact_fields() :: {slo_artifact_fields, slo_fields()} |
{dependency_artifact_fields, dependency_fields()}.
-type intermediate_representation(HFU) :: {intermediate_representation,
intermediate_representation_meta_data(),
binary(),
list(caffeine_lang@linker@artifacts:artifact_type()),
list(caffeine_lang@helpers:value_tuple()),
artifact_data(),
gleam@option:option(caffeine_lang@analysis@vendor:vendor())} |
{gleam_phantom, HFU}.
-type intermediate_representation_meta_data() :: {intermediate_representation_meta_data,
caffeine_lang@identifiers:expectation_label(),
caffeine_lang@identifiers:org_name(),
caffeine_lang@identifiers:service_name(),
caffeine_lang@identifiers:blueprint_name(),
caffeine_lang@identifiers:team_name(),
gleam@dict:dict(binary(), list(binary()))}.
-file("src/caffeine_lang/linker/ir.gleam", 88).
?DOC(false).
-spec promote(intermediate_representation(any())) -> intermediate_representation(any()).
promote(Ir) ->
{intermediate_representation,
erlang:element(2, Ir),
erlang:element(3, Ir),
erlang:element(4, Ir),
erlang:element(5, Ir),
erlang:element(6, Ir),
erlang:element(7, Ir)}.
-file("src/caffeine_lang/linker/ir.gleam", 103).
?DOC(false).
-spec ir_to_identifier(intermediate_representation(any())) -> binary().
ir_to_identifier(Ir) ->
<<<<<<<<<<<<(erlang:element(2, erlang:element(3, erlang:element(2, Ir))))/binary,
"."/utf8>>/binary,
(erlang:element(
2,
erlang:element(6, erlang:element(2, Ir))
))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(4, erlang:element(2, Ir))))/binary>>/binary,
"."/utf8>>/binary,
(erlang:element(2, erlang:element(2, erlang:element(2, Ir))))/binary>>.
-file("src/caffeine_lang/linker/ir.gleam", 115).
?DOC(false).
-spec get_slo_fields(artifact_data()) -> gleam@option:option(slo_fields()).
get_slo_fields(Data) ->
case gleam_stdlib:map_get(erlang:element(2, Data), s_l_o) of
{ok, {slo_artifact_fields, Slo}} ->
{some, Slo};
_ ->
none
end.
-file("src/caffeine_lang/linker/ir.gleam", 124).
?DOC(false).
-spec get_dependency_fields(artifact_data()) -> gleam@option:option(dependency_fields()).
get_dependency_fields(Data) ->
case gleam_stdlib:map_get(erlang:element(2, Data), dependency_relations) of
{ok, {dependency_artifact_fields, Dep}} ->
{some, Dep};
_ ->
none
end.
-file("src/caffeine_lang/linker/ir.gleam", 133).
?DOC(false).
-spec slo_only(slo_fields()) -> artifact_data().
slo_only(Slo) ->
{artifact_data, maps:from_list([{s_l_o, {slo_artifact_fields, Slo}}])}.
-file("src/caffeine_lang/linker/ir.gleam", 139).
?DOC(false).
-spec dependency_only(dependency_fields()) -> artifact_data().
dependency_only(Dep) ->
{artifact_data,
maps:from_list(
[{dependency_relations, {dependency_artifact_fields, Dep}}]
)}.
-file("src/caffeine_lang/linker/ir.gleam", 149).
?DOC(false).
-spec slo_with_dependency(slo_fields(), dependency_fields()) -> artifact_data().
slo_with_dependency(Slo, Dep) ->
{artifact_data,
maps:from_list(
[{s_l_o, {slo_artifact_fields, Slo}},
{dependency_relations, {dependency_artifact_fields, Dep}}]
)}.
-file("src/caffeine_lang/linker/ir.gleam", 163).
?DOC(false).
-spec update_slo_fields(artifact_data(), fun((slo_fields()) -> slo_fields())) -> artifact_data().
update_slo_fields(Data, Updater) ->
case gleam_stdlib:map_get(erlang:element(2, Data), s_l_o) of
{ok, {slo_artifact_fields, Slo}} ->
{artifact_data,
gleam@dict:insert(
erlang:element(2, Data),
s_l_o,
{slo_artifact_fields, Updater(Slo)}
)};
_ ->
Data
end.