Current section

Files

Jump to
birdie src birdie@internal@project.erl
Raw

src/birdie@internal@project.erl

-module(birdie@internal@project).
-compile([no_auto_import, nowarn_ignored, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-export([find_root/0, name/0]).
-moduledoc(false).
-file("src/birdie/internal/project.gleam", 16).
-spec do_find_root(binary()) -> {ok, binary()} | {error, simplifile:file_error()}.
-doc(false).
do_find_root(Path) ->
Manifest = filepath:join(Path, ~"gleam.toml"),
case simplifile_erl:is_file(Manifest) of
{ok, true} ->
{ok, Path};
{ok, false} ->
do_find_root(filepath:join(Path, ~".."));
{error, Reason} ->
{error, Reason}
end.
-file("src/birdie/internal/project.gleam", 12).
-spec find_root() -> {ok, binary()} | {error, simplifile:file_error()}.
-doc(false).
find_root() ->
do_find_root(~".").
-file("src/birdie/internal/project.gleam", 27).
-spec name() -> {ok, binary()} | {error, simplifile:file_error()}.
-doc(false).
name() ->
gleam@result:'try'(find_root(), fun(Root) ->
gleam@result:'try'(simplifile:read(filepath:join(Root, ~"gleam.toml")), fun(File) ->
case tom:parse(File) of
{ok, Toml} ->
case tom:get_string(Toml, [~"name"]) of
{ok, Name} ->
{ok, Name};
_value ->
erlang:error(#{
gleam_error => let_assert,
message => ~"`name` is a required field in `gleam.toml`, it should be impossible to run birdie on a project that doesn't have one",
file => ~"src/birdie/internal/project.gleam",
module => ~"birdie/internal/project",
function => ~"name",
line => 32,
value => _value,
start => 1048,
'end' => 1100,
pattern_start => 1059,
pattern_end => 1067
})
end;
_value@1 ->
erlang:error(#{
gleam_error => let_assert,
message => ~"running birdie in a gleam project with an invalid `gleam.toml` should be impossible",
file => ~"src/birdie/internal/project.gleam",
module => ~"birdie/internal/project",
function => ~"name",
line => 30,
value => _value@1,
start => 915,
'end' => 952,
pattern_start => 926,
pattern_end => 934
})
end
end)
end).