private List scan()

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;
  }