diff options
Diffstat (limited to 'src/main/java/com')
11 files changed, 58 insertions, 49 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/BlazeRuleHelpPrinter.java b/src/main/java/com/google/devtools/build/docgen/BlazeRuleHelpPrinter.java index 789554f312..b34bec81b7 100644 --- a/src/main/java/com/google/devtools/build/docgen/BlazeRuleHelpPrinter.java +++ b/src/main/java/com/google/devtools/build/docgen/BlazeRuleHelpPrinter.java @@ -28,13 +28,12 @@ public class BlazeRuleHelpPrinter { private static Map<String, RuleDocumentation> ruleDocMap = null; - /** - * Returns the documentation of the given rule to be printed on the console. - */ - public static String getRuleDoc(String ruleName, ConfiguredRuleClassProvider provider) { + /** Returns the documentation of the given rule to be printed on the console. */ + public static String getRuleDoc( + String ruleName, String productName, ConfiguredRuleClassProvider provider) { if (ruleDocMap == null) { try { - BuildDocCollector collector = new BuildDocCollector(provider, false); + BuildDocCollector collector = new BuildDocCollector(productName, provider, false); Map<String, RuleDocumentation> ruleDocs = collector.collect( ImmutableList.of("java/com/google/devtools/build/lib/view", "java/com/google/devtools/build/lib/rules"), null); diff --git a/src/main/java/com/google/devtools/build/docgen/BuildDocCollector.java b/src/main/java/com/google/devtools/build/docgen/BuildDocCollector.java index 31133cc605..df250d2e2f 100644 --- a/src/main/java/com/google/devtools/build/docgen/BuildDocCollector.java +++ b/src/main/java/com/google/devtools/build/docgen/BuildDocCollector.java @@ -44,10 +44,13 @@ import java.util.TreeMap; public class BuildDocCollector { private static final Splitter SHARP_SPLITTER = Splitter.on('#').limit(2).trimResults(); - private ConfiguredRuleClassProvider ruleClassProvider; - private boolean printMessages; + private final String productName; + private final ConfiguredRuleClassProvider ruleClassProvider; + private final boolean printMessages; - public BuildDocCollector(ConfiguredRuleClassProvider ruleClassProvider, boolean printMessages) { + public BuildDocCollector( + String productName, ConfiguredRuleClassProvider ruleClassProvider, boolean printMessages) { + this.productName = productName; this.ruleClassProvider = ruleClassProvider; this.printMessages = printMessages; } @@ -160,8 +163,7 @@ public class BuildDocCollector { */ public Map<String, RuleDocumentation> collect(List<String> inputDirs, String blackList) throws BuildEncyclopediaDocException, IOException { - RuleLinkExpander expander = new RuleLinkExpander( - ruleClassProvider.getProductName(), /* singlePage */ false); + RuleLinkExpander expander = new RuleLinkExpander(productName, /* singlePage */ false); return collect(inputDirs, blackList, expander); } diff --git a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java index bc38cfc7e7..52f34478eb 100644 --- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java +++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java @@ -26,10 +26,11 @@ import java.util.Collections; public class BuildEncyclopediaGenerator { private static void printUsage(OptionsParser parser) { System.err.println( - "Usage: docgen_bin -p rule_class_provider (-i input_dir)+\n" - + " [-o outputdir] [-b blacklist] [-1] [-h]\n\n" - + "Generates the Build Encyclopedia from embedded native rule documentation.\n" - + "The rule class provider (-p) and at least one input_dir (-i) must be specified.\n"); + "Usage: docgen_bin -n product_name -p rule_class_provider (-i input_dir)+\n" + + " [-o outputdir] [-b blacklist] [-1] [-h]\n\n" + + "Generates the Build Encyclopedia from embedded native rule documentation.\n" + + "The product name (-n), rule class provider (-p) and at least one input_dir\n" + + "(-i) must be specified.\n"); System.err.println( parser.describeOptions( Collections.<String, String>emptyMap(), OptionsParser.HelpVerbosity.LONG)); @@ -62,7 +63,9 @@ public class BuildEncyclopediaGenerator { Runtime.getRuntime().exit(0); } - if (options.inputDirs.size() == 0 || options.provider.isEmpty()) { + if (options.productName.isEmpty() + || options.inputDirs.isEmpty() + || options.provider.isEmpty()) { printUsage(parser); Runtime.getRuntime().exit(1); } @@ -70,11 +73,13 @@ public class BuildEncyclopediaGenerator { try { BuildEncyclopediaProcessor processor = null; if (options.singlePage) { - processor = new SinglePageBuildEncyclopediaProcessor( - createRuleClassProvider(options.provider)); + processor = + new SinglePageBuildEncyclopediaProcessor( + options.productName, createRuleClassProvider(options.provider)); } else { - processor = new MultiPageBuildEncyclopediaProcessor( - createRuleClassProvider(options.provider)); + processor = + new MultiPageBuildEncyclopediaProcessor( + options.productName, createRuleClassProvider(options.provider)); } processor.generateDocumentation( options.inputDirs, options.outputDir, options.blacklist); diff --git a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaOptions.java b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaOptions.java index b7c6b51e73..3c68ccb135 100644 --- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaOptions.java +++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaOptions.java @@ -24,6 +24,16 @@ import java.util.List; */ public class BuildEncyclopediaOptions extends OptionsBase { @Option( + name = "product_name", + abbrev = 'n', + defaultValue = "", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + help = "Name of the product to put in the documentation" + ) + public String productName; + + @Option( name = "input_dir", abbrev = 'i', defaultValue = "", diff --git a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java index 7abe7f12c1..82498d1502 100644 --- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java +++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaProcessor.java @@ -45,14 +45,19 @@ public abstract class BuildEncyclopediaProcessor { } }; - protected ConfiguredRuleClassProvider ruleClassProvider; + /** Name of the product to insert into the documentation. */ + protected final String productName; + + /** Rule class provider from which to extract the rule class hierarchy and attributes. */ + protected final ConfiguredRuleClassProvider ruleClassProvider; /** - * Creates the BuildEncyclopediaProcessor instance. The ruleClassProvider parameter - * is used for rule class hierarchy and attribute checking. - * + * Creates the BuildEncyclopediaProcessor instance. The ruleClassProvider parameter is used for + * rule class hierarchy and attribute checking. */ - public BuildEncyclopediaProcessor(ConfiguredRuleClassProvider ruleClassProvider) { + public BuildEncyclopediaProcessor( + String productName, ConfiguredRuleClassProvider ruleClassProvider) { + this.productName = productName; this.ruleClassProvider = Preconditions.checkNotNull(ruleClassProvider); } diff --git a/src/main/java/com/google/devtools/build/docgen/MultiPageBuildEncyclopediaProcessor.java b/src/main/java/com/google/devtools/build/docgen/MultiPageBuildEncyclopediaProcessor.java index 64077c91da..b87d1d9c2b 100644 --- a/src/main/java/com/google/devtools/build/docgen/MultiPageBuildEncyclopediaProcessor.java +++ b/src/main/java/com/google/devtools/build/docgen/MultiPageBuildEncyclopediaProcessor.java @@ -24,8 +24,9 @@ import java.util.Map; * Assembles the multi-page version of the Build Encyclopedia with one page per rule family. */ public class MultiPageBuildEncyclopediaProcessor extends BuildEncyclopediaProcessor { - public MultiPageBuildEncyclopediaProcessor(ConfiguredRuleClassProvider ruleClassProvider) { - super(ruleClassProvider); + public MultiPageBuildEncyclopediaProcessor( + String productName, ConfiguredRuleClassProvider ruleClassProvider) { + super(productName, ruleClassProvider); } /** @@ -39,8 +40,8 @@ public class MultiPageBuildEncyclopediaProcessor extends BuildEncyclopediaProces @Override public void generateDocumentation(List<String> inputDirs, String outputDir, String blackList) throws BuildEncyclopediaDocException, IOException { - BuildDocCollector collector = new BuildDocCollector(ruleClassProvider, false); - RuleLinkExpander expander = new RuleLinkExpander(ruleClassProvider.getProductName(), false); + BuildDocCollector collector = new BuildDocCollector(productName, ruleClassProvider, false); + RuleLinkExpander expander = new RuleLinkExpander(productName, false); Map<String, RuleDocumentation> ruleDocEntries = collector.collect( inputDirs, blackList, expander); warnAboutUndocumentedRules( diff --git a/src/main/java/com/google/devtools/build/docgen/SinglePageBuildEncyclopediaProcessor.java b/src/main/java/com/google/devtools/build/docgen/SinglePageBuildEncyclopediaProcessor.java index 56f7d29386..395455bba2 100644 --- a/src/main/java/com/google/devtools/build/docgen/SinglePageBuildEncyclopediaProcessor.java +++ b/src/main/java/com/google/devtools/build/docgen/SinglePageBuildEncyclopediaProcessor.java @@ -24,8 +24,9 @@ import java.util.Map; * Assembles the single-page version of the Build Encyclopedia. */ public class SinglePageBuildEncyclopediaProcessor extends BuildEncyclopediaProcessor { - public SinglePageBuildEncyclopediaProcessor(ConfiguredRuleClassProvider ruleClassProvider) { - super(ruleClassProvider); + public SinglePageBuildEncyclopediaProcessor( + String productName, ConfiguredRuleClassProvider ruleClassProvider) { + super(productName, ruleClassProvider); } /** @@ -39,8 +40,8 @@ public class SinglePageBuildEncyclopediaProcessor extends BuildEncyclopediaProce @Override public void generateDocumentation(List<String> inputDirs, String outputDir, String blackList) throws BuildEncyclopediaDocException, IOException { - BuildDocCollector collector = new BuildDocCollector(ruleClassProvider, false); - RuleLinkExpander expander = new RuleLinkExpander(ruleClassProvider.getProductName(), true); + BuildDocCollector collector = new BuildDocCollector(productName, ruleClassProvider, false); + RuleLinkExpander expander = new RuleLinkExpander(productName, true); Map<String, RuleDocumentation> ruleDocEntries = collector.collect( inputDirs, blackList, expander); warnAboutUndocumentedRules( diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 854119b9e6..6149e5fc02 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -1123,6 +1123,7 @@ genrule( cmd = ( "mkdir -p $(@D)/be && " + "$(location //src/main/java/com/google/devtools/build/docgen:docgen_bin)" + + " --product_name=bazel" + " --provider=com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider" + " --input_dir=$$PWD/src/main/java/com/google/devtools/build/lib" + " --output_dir=$(@D)/be &&" + diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index b929b99ec5..ef01005a9c 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java @@ -195,7 +195,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { /** Builder for {@link ConfiguredRuleClassProvider}. */ public static class Builder implements RuleDefinitionEnvironment { - private String productName; private final StringBuilder defaultWorkspaceFilePrefix = new StringBuilder(); private final StringBuilder defaultWorkspaceFileSuffix = new StringBuilder(); private Label preludeLabel; @@ -228,11 +227,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { // TODO(pcloudy): Remove this field after Bazel rule definitions are not used internally. private String nativeLauncherLabel; - public Builder setProductName(String productName) { - this.productName = productName; - return this; - } - public Builder setNativeLauncherLabel(String label) { this.nativeLauncherLabel = label; return this; @@ -425,7 +419,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { } return new ConfiguredRuleClassProvider( - productName, preludeLabel, runfilesPrefix, toolsRepository, @@ -489,8 +482,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { } }); - private final String productName; - /** * Default content that should be added at the beginning of the WORKSPACE file. */ @@ -558,7 +549,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { private final Environment.Frame globals; private ConfiguredRuleClassProvider( - String productName, Label preludeLabel, String runfilesPrefix, String toolsRepository, @@ -575,7 +565,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { PrerequisiteValidator prerequisiteValidator, ImmutableMap<String, Object> skylarkAccessibleJavaClasses, ImmutableList<Class<?>> skylarkModules) { - this.productName = productName; this.preludeLabel = preludeLabel; this.runfilesPrefix = runfilesPrefix; this.toolsRepository = toolsRepository; @@ -593,10 +582,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkModules); } - public String getProductName() { - return productName; - } - public PrerequisiteValidator getPrerequisiteValidator() { return prerequisiteValidator; } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index 3805c8b0db..d6e4f3eafb 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -209,7 +209,6 @@ public class BazelRuleClassProvider { @Override public void init(Builder builder) { builder - .setProductName("bazel") .setPrelude("//tools/build_rules:prelude_bazel") .setNativeLauncherLabel("//tools/launcher:launcher") .setRunfilesPrefix(Label.DEFAULT_REPOSITORY_DIRECTORY) diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java index 87cc44c09f..5e42732d5e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java @@ -200,7 +200,8 @@ public final class HelpCommand implements BlazeCommand { RuleClass ruleClass = provider.getRuleClassMap().get(helpSubject); if (ruleClass != null && ruleClass.isDocumented()) { // There is a rule with a corresponding name - outErr.printOut(BlazeRuleHelpPrinter.getRuleDoc(helpSubject, provider)); + outErr.printOut( + BlazeRuleHelpPrinter.getRuleDoc(helpSubject, runtime.getProductName(), provider)); return ExitCode.SUCCESS; } else { env.getReporter().handle(Event.error( |