Skip to content

Commit 71c3683

Browse files
committed
utils: source_files
1 parent 9c75389 commit 71c3683

File tree

1 file changed

+42
-12
lines changed

1 file changed

+42
-12
lines changed

src/utils/source_files.cr

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,49 @@
1818
# -----------------------------------------------------------------------
1919

2020
module MoonScript
21-
module SourceFile
22-
extend self
21+
module SourceFiles
22+
extend self
2323

24-
def globs(jsons: Array(MoonJson), *, include_tests = false) : Array(String)
25-
jsons.flat_map { |json| globs(json, include_tests: include_tests) }
26-
end
24+
def globs(jsons : Array(MoonJson), *, include_tests = false) : Array(String)
25+
jsons.flat_map { |json| globs(json, include_tests: include_tests) }
26+
end
27+
28+
def globs(json : MoonJson, *, include_tests = false) : Array(String)
29+
if include_tests
30+
json.source_directories | json.test_directories
31+
else
32+
json.source_directories
33+
end.map { |dir| glob_pattern(File.dirname(json.path), dir) }
34+
end
35+
36+
def everything(json : MoonJson, *, include_tests = false, dot_env = ".env") : Array(String)
37+
packages(json, include_self: true)
38+
.flat_map { |item| globs(item, include_tests: include_tests) + [item.path] }
39+
.push(Path[File.dirname(json.path), dot_env].to_s)
40+
end
2741

28-
def globs(json: MoonJson, *, include_tests = false) : Array(String)
29-
if include_tests
30-
json.source_directories | json.test_directories
31-
else
32-
json.source_directories
33-
end.map { |dir| glob_pattern(File.dirname(json.path), dir )}
42+
def packages(json : MoonJson, *, include_self = false) : Array(MoonJson)
43+
(include_self ? [json] : [] of MoonJson).tap do |jsons|
44+
each_package(json) do |package_json|
45+
jsons << package_json
3446
end
47+
end
48+
end
49+
50+
private def each_package(json : MoonJson, &)
51+
pattern =
52+
Path[
53+
File.dirname(json.path),
54+
".", ".moon", "packages", "**", "moon.json",
55+
]
56+
57+
Dir.glob(pattern).each do |file|
58+
yield MoonJson.parse(file)
59+
end
60+
end
61+
62+
private def glob_pattern(*dirs : Path | String)
63+
Path[*dirs, "**", "*.moon"].to_posix.to_s
3564
end
36-
end
65+
end
66+
end

0 commit comments

Comments
 (0)