Packages
caffeine_lang
2.0.5
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_json_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", 28).
-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", 79).
-spec extract_json_files_with_full_paths(list(binary()), binary()) -> list(binary()).
extract_json_files_with_full_paths(Files, Directory_path) ->
_pipe = Files,
_pipe@1 = gleam@list:filter(
_pipe,
fun(File) -> gleam_stdlib:string_ends_with(File, <<".json"/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", 55).
-spec collect_json_files_from_subdirectory(binary(), list(binary())) -> {ok,
list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
collect_json_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) ->
Json_files = extract_json_files_with_full_paths(
Files_in_nested,
Nested_path
),
{ok, lists:append(Acc, Json_files)}
end
);
_ ->
{ok, Acc}
end
end
) end
).
-file("src/caffeine_lang/parser/file_discovery.gleam", 40).
-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_json_files_from_subdirectory(Item_path, Accumulated_files);
_ ->
{ok, Accumulated_files}
end.
-file("src/caffeine_lang/parser/file_discovery.gleam", 9).
?DOC(false).
-spec get_json_files(binary()) -> {ok, list(binary())} |
{error, caffeine_lang@common@errors:compilation_error()}.
get_json_files(Base_directory) ->
gleam@result:'try'(
read_directory_or_error(Base_directory),
fun(Top_level_items) ->
Json_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 Json_file_paths of
{error, Err} ->
{error, Err};
{ok, []} ->
{error,
{linker_parse_error,
<<"No files found in: "/utf8,
Base_directory/binary>>}};
{ok, Files} ->
{ok, Files}
end
end
).