aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
diff options
context:
space:
mode:
authorGravatar David Chen <dzc@google.com>2016-08-16 08:05:30 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-08-16 15:21:32 +0000
commit753bcacfb7da3b04c68a30f11b9162653163ef3b (patch)
tree5bffe98bc0b5c2f63f7194f6c0020d9906b45b28 /src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
parent9650f54d1b27618a0191065160ad7c409d4f4b94 (diff)
Use Options for BE docgen command line arguments.
-- MOS_MIGRATED_REVID=130371455
Diffstat (limited to 'src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java60
1 files changed, 34 insertions, 26 deletions
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 f16f70384e..64c0584a7d 100644
--- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
+++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
@@ -14,26 +14,26 @@
package com.google.devtools.build.docgen;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
+import com.google.devtools.common.options.OptionsParser;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.Collections;
/**
* The main class for the docgen project. The class checks the input arguments
* and uses the BuildEncyclopediaProcessor for the actual documentation generation.
*/
public class BuildEncyclopediaGenerator {
-
- private static boolean checkArgs(String[] args) {
- if (args.length < 2) {
- System.err.println("There has to be two to four input parameters\n"
- + " - a comma separated list for input directories\n"
- + " - the name of the rule class provider\n"
- + " - an output directory (optional)."
- + " - a path to a file listing rules to not document (optional)");
- return false;
- }
- return true;
+ private static void printUsage(OptionsParser parser) {
+ System.err.println(
+ "Usage: docgen_bin -p rule_class_provider (-i input_dir)+\n"
+ + " [-o outputdir] [-b blacklist] [-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");
+ System.err.println(
+ parser.describeOptions(
+ Collections.<String, String>emptyMap(), OptionsParser.HelpVerbosity.LONG));
}
private static void fail(Throwable e, boolean printStackTrace) {
@@ -53,22 +53,30 @@ public class BuildEncyclopediaGenerator {
}
public static void main(String[] args) {
- if (checkArgs(args)) {
- // TODO(bazel-team): use flags
- try {
- BuildEncyclopediaProcessor processor = new BuildEncyclopediaProcessor(
- createRuleClassProvider(args[1]));
- processor.generateDocumentation(
- args[0].split(","), getArgsOrNull(args, 2), getArgsOrNull(args, 3));
- } catch (BuildEncyclopediaDocException e) {
- fail(e, false);
- } catch (Throwable e) {
- fail(e, true);
- }
+ OptionsParser parser = OptionsParser.newOptionsParser(BuildEncyclopediaOptions.class);
+ parser.setAllowResidue(false);
+ parser.parseAndExitUponError(args);
+ BuildEncyclopediaOptions options = parser.getOptions(BuildEncyclopediaOptions.class);
+
+ if (options.help) {
+ printUsage(parser);
+ Runtime.getRuntime().exit(0);
}
- }
- private static String getArgsOrNull(String[] args, int idx) {
- return args.length > idx ? args[idx] : null;
+ if (options.inputDirs.size() == 0 || options.provider.isEmpty()) {
+ printUsage(parser);
+ Runtime.getRuntime().exit(1);
+ }
+
+ try {
+ BuildEncyclopediaProcessor processor = new BuildEncyclopediaProcessor(
+ createRuleClassProvider(options.provider));
+ processor.generateDocumentation(
+ options.inputDirs, options.outputDir, options.blacklist);
+ } catch (BuildEncyclopediaDocException e) {
+ fail(e, false);
+ } catch (Throwable e) {
+ fail(e, true);
+ }
}
}