Skip to content

Commit 9b5dede

Browse files
committed
option to have an buildFile Check
1 parent de2804c commit 9b5dede

File tree

3 files changed

+37
-12
lines changed

3 files changed

+37
-12
lines changed

src/main/java/org/gradlex/javamodule/dependencies/initialization/Directory.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.gradle.api.model.ObjectFactory;
2121
import org.gradle.api.provider.ListProperty;
2222
import org.gradle.api.provider.Property;
23+
import org.gradle.api.provider.Provider;
2324

2425
import javax.inject.Inject;
2526
import java.io.File;
@@ -47,13 +48,16 @@ public abstract class Directory {
4748
public Directory(File root) {
4849
this.root = root;
4950
getExclusions().convention(Arrays.asList("build", "\\..*"));
51+
getRequiresBuildFile().convention(false);
5052
}
5153

5254
@Inject
5355
protected abstract ObjectFactory getObjects();
5456

5557
public abstract ListProperty<String> getExclusions();
5658

59+
public abstract Property<Boolean> getRequiresBuildFile();
60+
5761
/**
5862
* {@link Module#plugin(String)}
5963
*/
@@ -87,4 +91,6 @@ Module addModule(String subDirectory) {
8791
module.getPlugins().addAll(getPlugins());
8892
return module;
8993
}
94+
95+
9096
}

src/main/java/org/gradlex/javamodule/dependencies/initialization/JavaModulesExtension.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public void execute(ValueSourceSpec<ValueSourceDirectoryListing.DirectoryListing
101101
spec.getParameters().getRegexExclusions().set(moduleDirectory.getExclusions());
102102
spec.getParameters().getExclusions().set(moduleDirectory.customizedModules.keySet());
103103
spec.getParameters().getDir().set(modulesDirectory);
104+
spec.getParameters().getRequiresBuildFile().set(moduleDirectory.getRequiresBuildFile());
104105
}
105106
});
106107

src/main/java/org/gradlex/javamodule/dependencies/initialization/ValueSourceDirectoryListing.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,37 +23,55 @@
2323

2424
import java.io.File;
2525
import java.io.FileFilter;
26+
import java.io.IOException;
27+
import java.nio.file.DirectoryStream;
28+
import java.nio.file.Files;
29+
import java.nio.file.Path;
30+
import java.nio.file.attribute.BasicFileAttributes;
2631
import java.util.Arrays;
2732
import java.util.List;
33+
import java.util.function.BiPredicate;
2834
import java.util.stream.Collectors;
35+
import java.util.stream.Stream;
2936

3037
public abstract class ValueSourceDirectoryListing implements ValueSource<List<String>, ValueSourceDirectoryListing.DirectoryListingParameter> {
3138

3239

3340
@Override
3441
public List<String> obtain() {
42+
Path path = getParameters().getDir().get().toPath();
3543
File file = getParameters().getDir().get();
36-
File[] list = file.listFiles(new FileFilter() {
44+
try (Stream<Path> directoryStream = Files.find(path, 1, new BiPredicate<Path, BasicFileAttributes>() {
3745
@Override
38-
public boolean accept(File file) {
39-
return file.isDirectory();
46+
public boolean test(Path path, BasicFileAttributes basicFileAttributes) {
47+
return basicFileAttributes.isDirectory();
4048
}
41-
});
42-
if (list == null) {
43-
throw new RuntimeException("Failed to inspect: " + file.getAbsolutePath());
49+
})) {
50+
return directoryStream.filter(x -> !getParameters().getExclusions().get().contains(x.getFileName().toString()))
51+
.filter(x -> getParameters().getRegexExclusions().get().stream().noneMatch(r -> x.getFileName().toString().matches(r)))
52+
.filter(x -> checkBuildFile(x, getParameters()))
53+
.map(x -> x.getFileName().toString())
54+
.sorted()
55+
.collect(Collectors.toList());
56+
57+
} catch (IOException e) {
58+
throw new RuntimeException("Failed on " + file, e);
4459
}
45-
return Arrays.stream(list)
46-
.map(File::getName)
47-
.filter(x -> !getParameters().getExclusions().get().contains(x))
48-
.filter(x -> getParameters().getRegexExclusions().get().stream().noneMatch(x::matches))
49-
.sorted()
50-
.collect(Collectors.toList());
5160

5261

5362
}
5463

64+
private boolean checkBuildFile(Path x, DirectoryListingParameter parameters) {
65+
if (!parameters.getRequiresBuildFile().get()) {
66+
return true;
67+
}
68+
return Files.isRegularFile(x.resolve("build.gradle.kts")) || Files.isRegularFile(x.resolve("build.gradle"));
69+
}
70+
5571
interface DirectoryListingParameter extends ValueSourceParameters {
5672

73+
Property<Boolean> getRequiresBuildFile();
74+
5775
Property<File> getDir();
5876

5977
SetProperty<String> getExclusions();

0 commit comments

Comments
 (0)