Current section
Files
Jump to
Current section
Files
src/graded@internal@config.erl
-module(graded@internal@config).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/graded/internal/config.gleam").
-export([default_spec_file/1, default_cache_dir/0, read/1, defaults_for/1]).
-export_type([graded_config/0, config_error/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.
?MODULEDOC(false).
-type graded_config() :: {graded_config, binary(), binary(), binary()}.
-type config_error() :: {toml_read_error, binary(), simplifile:file_error()} |
{missing_package_name, binary()} |
{toml_parse_error, binary()}.
-file("src/graded/internal/config.gleam", 81).
?DOC(false).
-spec default_spec_file(binary()) -> binary().
default_spec_file(Package_name) ->
<<Package_name/binary, ".graded"/utf8>>.
-file("src/graded/internal/config.gleam", 85).
?DOC(false).
-spec default_cache_dir() -> binary().
default_cache_dir() ->
<<"build/.graded"/utf8>>.
-file("src/graded/internal/config.gleam", 47).
?DOC(false).
-spec read(binary()) -> {ok, graded_config()} | {error, config_error()}.
read(Gleam_toml_path) ->
gleam@result:'try'(
begin
_pipe = simplifile:read(Gleam_toml_path),
gleam@result:map_error(
_pipe,
fun(_capture) ->
{toml_read_error, Gleam_toml_path, _capture}
end
)
end,
fun(Content) ->
gleam@result:'try'(
begin
_pipe@1 = tom:parse(Content),
gleam@result:replace_error(
_pipe@1,
{toml_parse_error, Gleam_toml_path}
)
end,
fun(Toml) ->
gleam@result:'try'(
begin
_pipe@2 = tom:get_string(Toml, [<<"name"/utf8>>]),
gleam@result:replace_error(
_pipe@2,
{missing_package_name, Gleam_toml_path}
)
end,
fun(Package_name) ->
Spec_file = case tom:get_string(
Toml,
[<<"tools"/utf8>>,
<<"graded"/utf8>>,
<<"spec_file"/utf8>>]
) of
{ok, Value} ->
Value;
{error, _} ->
default_spec_file(Package_name)
end,
Cache_dir = case tom:get_string(
Toml,
[<<"tools"/utf8>>,
<<"graded"/utf8>>,
<<"cache_dir"/utf8>>]
) of
{ok, Value@1} ->
Value@1;
{error, _} ->
default_cache_dir()
end,
{ok,
{graded_config,
Package_name,
Spec_file,
Cache_dir}}
end
)
end
)
end
).
-file("src/graded/internal/config.gleam", 73).
?DOC(false).
-spec defaults_for(binary()) -> graded_config().
defaults_for(Package_name) ->
{graded_config,
Package_name,
default_spec_file(Package_name),
default_cache_dir()}.