|
2 | 2 |
|
3 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; |
4 | 4 | import java.io.IOException; |
| 5 | +import java.nio.file.FileSystem; |
| 6 | +import java.nio.file.FileSystems; |
5 | 7 | import java.nio.file.Files; |
6 | 8 | import java.nio.file.Path; |
| 9 | +import java.nio.file.PathMatcher; |
| 10 | +import java.nio.file.Paths; |
7 | 11 | import java.util.Collection; |
8 | 12 | import java.util.Collections; |
9 | 13 | import java.util.HashSet; |
@@ -121,13 +125,29 @@ public static boolean allFilesPresent(Path basePath, BaseManifest manifest) { |
121 | 125 | * @param ignoreMissingFiles relative paths of files to ignore if they're missing |
122 | 126 | */ |
123 | 127 | 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 | + |
124 | 142 | 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 | + }); |
129 | 148 | } |
130 | 149 |
|
| 150 | + |
131 | 151 | /** |
132 | 152 | * |
133 | 153 | * @param outputDir directory where manifest and other module files are based |
|
0 commit comments