Current section
Files
Jump to
Current section
Files
src/sketch_css@uniconfig.erl
-module(sketch_css@uniconfig).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/sketch_css/uniconfig.gleam").
-export([read/1]).
-export_type([config/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 config() :: {config,
binary(),
binary(),
gleam@dict:dict(binary(), tom:toml())}.
-file("src/sketch_css/uniconfig.gleam", 53).
?DOC(false).
-spec parse_toml(binary()) -> {ok, gleam@dict:dict(binary(), tom:toml())} |
{error, snag:snag()}.
parse_toml(Content) ->
_pipe = tom:parse(Content),
_pipe@1 = snag:map_error(_pipe, fun gleam@string:inspect/1),
_pipe@2 = snag:context(_pipe@1, <<"Unable to parse content"/utf8>>),
snag:context(_pipe@2, <<"content: "/utf8, Content/binary>>).
-file("src/sketch_css/uniconfig.gleam", 60).
?DOC(false).
-spec add_leading_slash(binary()) -> binary().
add_leading_slash(Dir) ->
gleam@bool:guard(gleam@string:is_empty(Dir), <<"/"/utf8>>, fun() -> Dir end).
-file("src/sketch_css/uniconfig.gleam", 30).
?DOC(false).
-spec package_config(binary(), binary()) -> {ok, config()} |
{error, snag:snag()}.
package_config(Dir, Package_name) ->
Filename = gleam@string:join([Package_name, <<"toml"/utf8>>], <<"."/utf8>>),
Filename@1 = gleam@string:join([Dir, Filename], <<"/"/utf8>>),
Gleam_toml = gleam@string:join([Dir, <<"gleam.toml"/utf8>>], <<"/"/utf8>>),
_pipe = sketch_css@fs:read_file(Filename@1),
_pipe@1 = gleam@result:'try'(_pipe, fun parse_toml/1),
_pipe@2 = gleam@result:map(
_pipe@1,
fun(_capture) -> gleam@pair:new(Filename@1, _capture) end
),
_pipe@7 = gleam@result:try_recover(
_pipe@2,
fun(_) -> _pipe@3 = sketch_css@fs:read_file(Gleam_toml),
_pipe@4 = gleam@result:'try'(_pipe@3, fun parse_toml/1),
gleam@result:then(
_pipe@4,
fun(Config) -> _pipe@5 = tom:get_table(Config, [Package_name]),
_pipe@6 = snag:map_error(
_pipe@5,
fun gleam@string:inspect/1
),
gleam@result:map(
_pipe@6,
fun(_capture@1) ->
gleam@pair:new(Gleam_toml, _capture@1)
end
) end
) end
),
gleam@result:map(
_pipe@7,
fun(Config@1) ->
{File, Config@2} = Config@1,
Directory = add_leading_slash(Dir),
{config, Directory, File, Config@2}
end
).
-file("src/sketch_css/uniconfig.gleam", 20).
?DOC(false).
-spec do_read(binary(), binary()) -> {ok, config()} | {error, snag:snag()}.
do_read(Dir, Package_name) ->
gleam@result:try_recover(
package_config(Dir, Package_name),
fun(_) ->
Error = <<"Impossible to find config"/utf8>>,
gleam@bool:guard(
gleam@string:is_empty(Dir),
snag:error(Error),
fun() ->
Segments = gleam@string:split(Dir, <<"/"/utf8>>),
Segments@1 = gleam@list:take(
Segments,
erlang:length(Segments) - 1
),
_pipe = gleam@string:join(Segments@1, <<"/"/utf8>>),
do_read(_pipe, Package_name)
end
)
end
).
-file("src/sketch_css/uniconfig.gleam", 15).
?DOC(false).
-spec read(binary()) -> {ok, config()} | {error, snag:snag()}.
read(Package_name) ->
gleam@result:'try'(
sketch_css@fs:current_directory(),
fun(Cwd) -> do_read(Cwd, Package_name) end
).