Current section
Files
Jump to
Current section
Files
src/go_over@config.erl
-module(go_over@config).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([filter_packages/2, filter_advisory_ids/2, filter_severity/2, read_config/1]).
-export_type([config/0]).
-type config() :: {config,
boolean(),
list(binary()),
list(binary()),
list(binary())}.
-spec filter_packages(config(), list(go_over@packages:package())) -> list(go_over@packages:package()).
filter_packages(Conf, Pkgs) ->
gleam@list:filter(
Pkgs,
fun(Pkg) ->
not gleam@list:contains(
erlang:element(3, Conf),
erlang:element(2, Pkg)
)
end
).
-spec filter_advisory_ids(config(), list(go_over@advisories:advisory())) -> list(go_over@advisories:advisory()).
filter_advisory_ids(Conf, Advs) ->
gleam@list:filter(
Advs,
fun(Adv) ->
not gleam@list:contains(
erlang:element(5, Conf),
erlang:element(2, Adv)
)
end
).
-spec filter_severity(config(), list(go_over@warning:warning())) -> list(go_over@warning:warning()).
filter_severity(Conf, Warnings) ->
gleam@list:filter(
Warnings,
fun(W) ->
not gleam@list:contains(
erlang:element(4, Conf),
gleam@string:lowercase(erlang:element(6, W))
)
end
).
-spec as_string(tom:toml()) -> binary().
as_string(Toml) ->
{string, S} = case Toml of
{string, _} -> Toml;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"go_over/config"/utf8>>,
function => <<"as_string"/utf8>>,
line => 66})
end,
S.
-spec read_config(binary()) -> config().
read_config(Path) ->
_assert_subject = simplifile:read(Path),
{ok, Res} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"go_over/config"/utf8>>,
function => <<"read_config"/utf8>>,
line => 21})
end,
_assert_subject@1 = tom:parse(Res),
{ok, Gleam} = case _assert_subject@1 of
{ok, _} -> _assert_subject@1;
_assert_fail@1 ->
erlang:error(#{gleam_error => let_assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail@1,
module => <<"go_over/config"/utf8>>,
function => <<"read_config"/utf8>>,
line => 22})
end,
Go_over = begin
_pipe = tom:get_table(Gleam, [<<"go-over"/utf8>>]),
gleam@result:unwrap(_pipe, gleam@dict:new())
end,
Cache = begin
_pipe@1 = tom:get_bool(Go_over, [<<"cache"/utf8>>]),
gleam@result:unwrap(_pipe@1, true)
end,
Ignore = begin
_pipe@2 = tom:get_table(Go_over, [<<"ignore"/utf8>>]),
gleam@result:unwrap(_pipe@2, gleam@dict:new())
end,
Packages = begin
_pipe@3 = tom:get_array(Ignore, [<<"packages"/utf8>>]),
gleam@result:unwrap(_pipe@3, [])
end,
Severity = begin
_pipe@4 = tom:get_array(Ignore, [<<"severity"/utf8>>]),
gleam@result:unwrap(_pipe@4, [])
end,
Ids = begin
_pipe@5 = tom:get_array(Ignore, [<<"ids"/utf8>>]),
gleam@result:unwrap(_pipe@5, [])
end,
{config,
Cache,
gleam@list:map(Packages, fun as_string/1),
gleam@list:map(Severity, fun as_string/1),
gleam@list:map(Ids, fun as_string/1)}.