Packages
caffeine_lang
3.0.1
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@parser@file_discovery.erl
-module(caffeine_lang@parser@file_discovery).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/parser/file_discovery.gleam").
-export([get_caffeine_files/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/parser/file_discovery.gleam", 26).
-spec read_directory_or_error(binary()) -> {ok, list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
read_directory_or_error(Directory_path) ->
case simplifile_erl:read_directory(Directory_path) of
{ok, Items} ->
{ok, Items};
{error, Err} ->
{error,
{linker_parse_error,
<<<<<<(simplifile:describe_error(Err))/binary, " ("/utf8>>/binary,
Directory_path/binary>>/binary,
")"/utf8>>}}
end.
-file("src/caffeine_lang/parser/file_discovery.gleam", 77).
-spec extract_caffeine_files_with_full_paths(list(binary()), binary()) -> list(binary()).
extract_caffeine_files_with_full_paths(Files, Directory_path) ->
_pipe = Files,
_pipe@1 = gleam@list:filter(
_pipe,
fun(File) ->
gleam_stdlib:string_ends_with(File, <<".caffeine"/utf8>>)
end
),
gleam@list:map(
_pipe@1,
fun(File@1) ->
<<<<Directory_path/binary, "/"/utf8>>/binary, File@1/binary>>
end
).
-file("src/caffeine_lang/parser/file_discovery.gleam", 53).
-spec collect_caffeine_files_from_subdirectory(binary(), list(binary())) -> {ok,
list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
collect_caffeine_files_from_subdirectory(Subdirectory_path, Accumulated_files) ->
gleam@result:'try'(
read_directory_or_error(Subdirectory_path),
fun(Items_in_subdirectory) -> _pipe = Items_in_subdirectory,
gleam@list:try_fold(
_pipe,
Accumulated_files,
fun(Acc, Item_name) ->
Nested_path = <<<<Subdirectory_path/binary, "/"/utf8>>/binary,
Item_name/binary>>,
case simplifile_erl:is_directory(Nested_path) of
{ok, true} ->
gleam@result:'try'(
read_directory_or_error(Nested_path),
fun(Files_in_nested) ->
Caffeine_files = extract_caffeine_files_with_full_paths(
Files_in_nested,
Nested_path
),
{ok, lists:append(Acc, Caffeine_files)}
end
);
_ ->
{ok, Acc}
end
end
) end
).
-file("src/caffeine_lang/parser/file_discovery.gleam", 38).
-spec process_top_level_item(binary(), binary(), list(binary())) -> {ok,
list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
process_top_level_item(Base_directory, Item_name, Accumulated_files) ->
Item_path = <<<<Base_directory/binary, "/"/utf8>>/binary, Item_name/binary>>,
case simplifile_erl:is_directory(Item_path) of
{ok, true} ->
collect_caffeine_files_from_subdirectory(
Item_path,
Accumulated_files
);
_ ->
{ok, Accumulated_files}
end.
-file("src/caffeine_lang/parser/file_discovery.gleam", 9).
?DOC(false).
-spec get_caffeine_files(binary()) -> {ok, list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
get_caffeine_files(Base_directory) ->
gleam@result:'try'(
read_directory_or_error(Base_directory),
fun(Top_level_items) ->
File_paths = begin
_pipe = Top_level_items,
gleam@list:try_fold(
_pipe,
[],
fun(Accumulated_files, Item_name) ->
process_top_level_item(
Base_directory,
Item_name,
Accumulated_files
)
end
)
end,
case File_paths of
{error, Err} ->
{error, Err};
{ok, Files} ->
{ok, Files}
end
end
).