in tools/docgen/src/main/java/com/google/cloud/verticals/foundations/dataharmonization/doclet/WhistleDoclet.java [172:217]
public boolean run(DocletEnvironment environment) {
ReflectedInstance.registerFactory(ReflectedCallableFunction::new);
ReflectedInstance.registerFactory(ReflectedJavaFunction::new);
ReflectedInstance.registerFactory(ReflectedPlugin::new);
ReflectedInstance.registerFactory(
ReflectedTargetConstructor.TARGET_CONSTRUCTOR_BASECLASS_NAME,
ReflectedTargetConstructor::new);
PluginScanner pluginFinder = new PluginScanner();
Set<ReflectedPlugin> plugins = new HashSet<>();
pluginFinder.scan(environment.getIncludedElements(), plugins);
ReversePackageSearch reversePackageSearch = new ReversePackageSearch(plugins);
try {
reversePackageSearch.generateReverseMappings();
} catch (IOException e) {
throw new UncheckedIOException("Failed to initialize engine", e);
}
// TODO(rpolyano): Make MarkupFormat configurable from CLI
FunctionScanner docBuilder =
new FunctionScanner(
new Markdown(),
environment.getDocTrees(),
environment.getTypeUtils(),
environment.getElementUtils(),
reversePackageSearch);
Map<String, PackageDoc.Builder> pkgToDocs = new HashMap<>();
docBuilder.scan(environment.getIncludedElements(), pkgToDocs);
FilePrinter mdPrinter = new FilePrinter(new Markdown());
Map<Path, String> filesToWrite =
mdPrinter.format(
pkgToDocs.values().stream()
.map(PackageDoc.Builder::build)
.collect(Collectors.toList()));
if (verify) {
filesToWrite.forEach(this::verifyFile);
} else {
filesToWrite.forEach(this::writeFile);
}
return true;
}