-module(sketch_css@uniconfig). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([read/1]). -export_type([config/0]). -type config() :: {config, binary(), binary(), gleam@dict:dict(binary(), tom:toml())}. -file("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/uniconfig.gleam", 53). -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("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/uniconfig.gleam", 60). -spec add_leading_slash(binary()) -> binary(). add_leading_slash(Dir) -> gleam@bool:guard(gleam@string:is_empty(Dir), <<"/"/utf8>>, fun() -> Dir end). -file("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/uniconfig.gleam", 30). -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("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/uniconfig.gleam", 20). -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("/Users/doctor/Workspace/sketch/sketch_css/src/sketch_css/uniconfig.gleam", 15). -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 ).