private static Action task()

in tools/docgen/src/main/java/com/google/cloud/verticals/foundations/dataharmonization/DocgenPlugin.java [59:113]


  private static Action<? super Javadoc> task(
      DocgenPluginExtension docgenSettings, boolean verify, Project project) {

    return (javadoc) -> {
      JavaPluginExtension javaExtension =
          project.getExtensions().getByType(JavaPluginExtension.class);
      SourceSet sourceSet = javaExtension.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
      javadoc.setDescription("Generates Whistle Plugin Function documentation code.");
      javadoc.setGroup(JavaBasePlugin.DOCUMENTATION_GROUP);
      javadoc.setClasspath(sourceSet.getOutput().plus(sourceSet.getCompileClasspath()));
      javadoc.setSource(sourceSet.getAllJava());
      javadoc
          .getOptions()
          .setDestinationDirectory(
              docgenSettings
                  .getDestinationDirectory()
                  .orElse(javaExtension.getDocsDir().dir("whistle"))
                  .get()
                  .getAsFile());
      if (verify) {
        javadoc.getOptions().windowTitle(null).addBooleanOption(VerifyOption.NAME, true);
      }
      javadoc
          .getOptions()
          .windowTitle(null)
          .addStringOption(GradleProjectPathOption.NAME, project.getProjectDir().getAbsolutePath());
      javadoc
          .getModularity()
          .getInferModulePath()
          .convention(javaExtension.getModularity().getInferModulePath());

      // We need runtime access to two sets of classes:
      // 1) The project's classes, so we can load the plugin and determine packages
      // 2) This plugin's classes (i.e. the doclet and supporting code)
      // The order matters here because we don't want this plugin's deps
      // overriding the project's deps (e.x. gradle transitively imports an old version of guava).
      List<File> classes =
          ImmutableList.<File>builder()
              .addAll(sourceSet.getRuntimeClasspath().getFiles())
              .addAll(sourceSet.getCompileClasspath().getFiles())
              .addAll(currentClasspath())
              .build();

      javadoc.getOptions().setDocletpath(classes);
      javadoc.getOptions().setClasspath(classes);
      javadoc.getOptions().setDoclet(WhistleDoclet.class.getName());

      String debugPort = System.getProperty("docgenDebug");
      if (debugPort != null) {
        javadoc
            .getOptions()
            .jFlags("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=" + debugPort);
      }
    };
  }