Current section

Files

Jump to
caffeine_lang src caffeine_lang@phase_1@parser@instantiation@unresolved_team_instantiation.erl
Raw

src/caffeine_lang@phase_1@parser@instantiation@unresolved_team_instantiation.erl

-module(caffeine_lang@phase_1@parser@instantiation@unresolved_team_instantiation).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/phase_1/parser/instantiation/unresolved_team_instantiation.gleam").
-export([parse_slos_instantiation/2, parse_unresolved_team_instantiation/1]).
-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/phase_1/parser/instantiation/unresolved_team_instantiation.gleam", 35).
?DOC(" Parses a single SLO.\n").
-spec parse_slo(glaml:node_(), gleam@dict:dict(binary(), binary())) -> {ok,
caffeine_lang@types@unresolved@unresolved_slo:slo()} |
{error, binary()}.
parse_slo(Slo, Params) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node(
Slo,
<<"name"/utf8>>
),
fun(Name) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node(
Slo,
<<"sli_type"/utf8>>
),
fun(Sli_type) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_dict_strings_from_node(
Slo,
<<"typed_instatiation_of_query_templatized_variables"/utf8>>
),
fun(Typed_instatiation_of_query_templatized_variables) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_float_from_node(
Slo,
<<"threshold"/utf8>>
),
fun(Threshold) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_int_from_node(
Slo,
<<"window_in_days"/utf8>>
),
fun(Window_in_days) ->
Service_name@1 = case gleam_stdlib:map_get(
Params,
<<"service_name"/utf8>>
) of
{ok, Service_name} -> Service_name;
_assert_fail ->
erlang:error(
#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"caffeine_lang/phase_1/parser/instantiation/unresolved_team_instantiation"/utf8>>,
function => <<"parse_slo"/utf8>>,
line => 59,
value => _assert_fail,
start => 1920,
'end' => 1982,
pattern_start => 1931,
pattern_end => 1947}
)
end,
{ok,
{slo,
Name,
Typed_instatiation_of_query_templatized_variables,
Threshold,
Sli_type,
Service_name@1,
Window_in_days}}
end
)
end
)
end
)
end
)
end
).
-file("src/caffeine_lang/phase_1/parser/instantiation/unresolved_team_instantiation.gleam", 26).
-spec parse_slos_instantiation(binary(), gleam@dict:dict(binary(), binary())) -> {ok,
list(caffeine_lang@types@unresolved@unresolved_slo:slo())} |
{error, binary()}.
parse_slos_instantiation(File_path, Params) ->
caffeine_lang@phase_1@parser@utils@glaml_helpers:parse_specification(
File_path,
Params,
fun parse_slo/2,
<<"slos"/utf8>>
).
-file("src/caffeine_lang/phase_1/parser/instantiation/unresolved_team_instantiation.gleam", 13).
?DOC(
" Parses an instantiation from a YAML file. This is a single team with at least one slo.\n"
" Note that within a configutation repository, there can be multiple instantiations for\n"
" the same team and even the same service. Logic for this lives within the linking code.\n"
).
-spec parse_unresolved_team_instantiation(binary()) -> {ok,
caffeine_lang@types@unresolved@unresolved_team:team()} |
{error, binary()}.
parse_unresolved_team_instantiation(File_path) ->
gleam@result:'try'(
caffeine_lang@phase_1@parser@utils@general_common:extract_params_from_file_path(
File_path
),
fun(Params) ->
Team_name@1 = case gleam_stdlib:map_get(
Params,
<<"team_name"/utf8>>
) of
{ok, Team_name} -> Team_name;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"caffeine_lang/phase_1/parser/instantiation/unresolved_team_instantiation"/utf8>>,
function => <<"parse_unresolved_team_instantiation"/utf8>>,
line => 19,
value => _assert_fail,
start => 768,
'end' => 824,
pattern_start => 779,
pattern_end => 792})
end,
gleam@result:'try'(
parse_slos_instantiation(File_path, Params),
fun(Slos) -> {ok, {team, Team_name@1, Slos}} end
)
end
).