1818# -----------------------------------------------------------------------
1919
2020module 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