Skip to content

Commit 247ff18

Browse files
committed
feat(Manifests): globbing in allFilesPresent
1 parent e7d362d commit 247ff18

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

src/main/java/me/itzg/helpers/files/Manifests.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import java.io.IOException;
5+
import java.nio.file.FileSystem;
6+
import java.nio.file.FileSystems;
57
import java.nio.file.Files;
68
import java.nio.file.Path;
9+
import java.nio.file.PathMatcher;
10+
import java.nio.file.Paths;
711
import java.util.Collection;
812
import java.util.Collections;
913
import java.util.HashSet;
@@ -121,13 +125,29 @@ public static boolean allFilesPresent(Path basePath, BaseManifest manifest) {
121125
* @param ignoreMissingFiles relative paths of files to ignore if they're missing
122126
*/
123127
public static boolean allFilesPresent(Path basePath, BaseManifest manifest, @Nullable List<String> ignoreMissingFiles) {
128+
if (ignoreMissingFiles == null || ignoreMissingFiles.isEmpty()) {
129+
return manifest.getFiles().stream()
130+
.allMatch(p -> Files.exists(basePath.resolve(p)));
131+
}
132+
133+
if (ignoreMissingFiles.stream().anyMatch(s -> s.equals("*"))) {
134+
return true;
135+
}
136+
137+
FileSystem fs = FileSystems.getDefault();
138+
List<PathMatcher> matchers = ignoreMissingFiles.stream()
139+
.map(pattern -> fs.getPathMatcher("glob:" + pattern))
140+
.collect(Collectors.toList());
141+
124142
return manifest.getFiles().stream()
125-
.allMatch(p ->
126-
(ignoreMissingFiles != null && ignoreMissingFiles.contains(p))
127-
|| Files.exists(basePath.resolve(p))
128-
);
143+
.allMatch(p -> {
144+
Path file = Paths.get(p);
145+
boolean ignored = matchers.stream().anyMatch(m -> m.matches(file));
146+
return ignored || Files.exists(basePath.resolve(p));
147+
});
129148
}
130149

150+
131151
/**
132152
*
133153
* @param outputDir directory where manifest and other module files are based

0 commit comments

Comments
 (0)