aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Luis Fernando Pino Duque <lpino@google.com>2016-02-03 12:57:04 +0000
committerGravatar David Chen <dzc@google.com>2016-02-03 22:06:21 +0000
commit0d1a53cf5614d621518914682ec44c6f20a27ab7 (patch)
tree6c8e68a984761ed7d3f5f082d2f38e4b52584ce9
parentcc3e6e3cf6fb55700607ebdadc70b804f5861c53 (diff)
Remove the MAIN_RULE_CLASS_PROVIDER constant and turn it into a command line parameter.
-- MOS_MIGRATED_REVID=113730588
-rw-r--r--src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java17
-rw-r--r--src/main/java/com/google/devtools/build/docgen/ListRuleMain.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD3
-rw-r--r--src/main/java/com/google/devtools/build/lib/Constants.java4
4 files changed, 19 insertions, 17 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 d7983a1600..f16f70384e 100644
--- a/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
+++ b/src/main/java/com/google/devtools/build/docgen/BuildEncyclopediaGenerator.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.docgen;
-import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import java.lang.reflect.InvocationTargetException;
@@ -26,10 +25,12 @@ import java.lang.reflect.Method;
public class BuildEncyclopediaGenerator {
private static boolean checkArgs(String[] args) {
- if (args.length < 1) {
- System.err.println("There has to be one or two input parameters\n"
+ 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"
- + " - an output directory (optional).");
+ + " - 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;
@@ -43,10 +44,10 @@ public class BuildEncyclopediaGenerator {
Runtime.getRuntime().exit(1);
}
- private static ConfiguredRuleClassProvider createRuleClassProvider()
+ private static ConfiguredRuleClassProvider createRuleClassProvider(String classProvider)
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
IllegalAccessException {
- Class<?> providerClass = Class.forName(Constants.MAIN_RULE_CLASS_PROVIDER);
+ Class<?> providerClass = Class.forName(classProvider);
Method createMethod = providerClass.getMethod("create");
return (ConfiguredRuleClassProvider) createMethod.invoke(null);
}
@@ -56,9 +57,9 @@ public class BuildEncyclopediaGenerator {
// TODO(bazel-team): use flags
try {
BuildEncyclopediaProcessor processor = new BuildEncyclopediaProcessor(
- createRuleClassProvider());
+ createRuleClassProvider(args[1]));
processor.generateDocumentation(
- args[0].split(","), getArgsOrNull(args, 1), getArgsOrNull(args, 2));
+ args[0].split(","), getArgsOrNull(args, 2), getArgsOrNull(args, 3));
} catch (BuildEncyclopediaDocException e) {
fail(e, false);
} catch (Throwable e) {
diff --git a/src/main/java/com/google/devtools/build/docgen/ListRuleMain.java b/src/main/java/com/google/devtools/build/docgen/ListRuleMain.java
index 5ef09649e6..b2e0bb223a 100644
--- a/src/main/java/com/google/devtools/build/docgen/ListRuleMain.java
+++ b/src/main/java/com/google/devtools/build/docgen/ListRuleMain.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.docgen;
-import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClassProvider;
@@ -27,16 +26,21 @@ import java.util.Map;
*/
public class ListRuleMain {
- private static ConfiguredRuleClassProvider createRuleClassProvider()
+ private static ConfiguredRuleClassProvider createRuleClassProvider(String classProvider)
throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
IllegalAccessException {
- Class<?> providerClass = Class.forName(Constants.MAIN_RULE_CLASS_PROVIDER);
+ Class<?> providerClass = Class.forName(classProvider);
Method createMethod = providerClass.getMethod("create");
return (ConfiguredRuleClassProvider) createMethod.invoke(null);
}
public static void main(String[] args) throws Exception {
- RuleClassProvider provider = createRuleClassProvider();
+ if (args.length == 0) {
+ System.err.println(
+ "Expected one input parameter, please provide the name of the rule class provider");
+ }
+
+ RuleClassProvider provider = createRuleClassProvider(args[0]);
Map<String, RuleClass> rcMap = provider.getRuleClassMap();
for (String name : rcMap.keySet()) {
System.out.println(name);
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index aa7450c143..f965839321 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -898,7 +898,8 @@ genrule(
cmd = (
"mkdir -p $(@D)/be && " +
"$(location //src/main/java/com/google/devtools/build/docgen:docgen_bin)" +
- " $$PWD/src/main/java/com/google/devtools/build/lib" +
+ " $$PWD/src/main/java/com/google/devtools/build/lib " +
+ "com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider" +
" $(@D)/be &&" +
"zip -qj $@ $(@D)/be/*"
),
diff --git a/src/main/java/com/google/devtools/build/lib/Constants.java b/src/main/java/com/google/devtools/build/lib/Constants.java
index edf6be59ab..cdf54dba83 100644
--- a/src/main/java/com/google/devtools/build/lib/Constants.java
+++ b/src/main/java/com/google/devtools/build/lib/Constants.java
@@ -34,10 +34,6 @@ public final class Constants {
// Default value for the --package_path flag if not otherwise set.
public static final ImmutableList<String> DEFAULT_PACKAGE_PATH = ImmutableList.of("%workspace%");
- // The rule documentation generator iterates over all rules in the class by this name.
- public static final String MAIN_RULE_CLASS_PROVIDER =
- "com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider";
-
// Native Java deps are all linked into a single file, which is named with this value + ".so".
public static final String NATIVE_DEPS_LIB_SUFFIX = "_nativedeps";