in gradle-runner-server/src/main/java/jetbrains/buildServer/gradle/server/GradleRunnerDiscoveryExtension.java [42:82]
private List<DiscoveredObject> scan(@NotNull Element dir) {
final List<FileElement> foundBuildFiles = new ArrayList<>(0);
traverse(dir, (d, child) -> {
if (child.isLeaf() && ourBuildFileSupportedNames.contains(child.getName())) {
foundBuildFiles.add(new FileElement(d, child));
return false;
}
return true;
});
if (foundBuildFiles.isEmpty()) return Collections.emptyList();
final Set<Element> foundWrapperDirs = new LinkedHashSet<>(0);
traverse(dir, (d, child) -> {
if (child.isLeaf() && ourWrapperSupportedNames.contains(child.getName())) {
foundWrapperDirs.add(d);
return false;
}
return true;
});
final List<DiscoveredObject> res = new ArrayList<DiscoveredObject>(foundBuildFiles.size());
for (FileElement file : foundBuildFiles) {
final Map<String, String> props = new HashMap<String, String>();
props.put(GradleRunnerConstants.GRADLE_TASKS, "clean build");
if (file.isSubdirectory()) {
props.put(GradleRunnerConstants.PATH_TO_BUILD_FILE, file.getPath());
}
if (!foundWrapperDirs.isEmpty()) {
// Seems it's safe to choose first one
final Element wrapperDirElement = foundWrapperDirs.iterator().next();
props.put(GradleRunnerConstants.GRADLE_WRAPPER_FLAG, "true");
final String wrapperDir = wrapperDirElement.getFullName();
props.put(GradleRunnerConstants.GRADLE_WRAPPER_PATH, wrapperDir);
}
res.add(new DiscoveredObject(GradleRunnerConstants.RUNNER_TYPE, props));
}
return res;
}