aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ccalvarin <ccalvarin@google.com>2017-06-30 16:01:36 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-07-03 09:05:16 +0200
commit59a0e4f10bf037dcd4f257b2e21573fa1b690e93 (patch)
treede0608d43ac8fe4931787a63966091eb30d729e2
parent30c35a2a447a9fc5e93a6a5849d9c8a480d99464 (diff)
Enforce the new category and effect tags.
All options need to explicitly list their category and effect. If they are uncategorized, this makes the lack of information obvious. Remove defaults from the annotation to enforce this. Also enforce the sanity check that no option should have UNKNOWN or NO_OP effects listed with other effect tags. Includes some last default sets for options I missed in the previous mass-setting change, and some that were added since. PiperOrigin-RevId: 160641861
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/FeaturePolicyOptions.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/remote/RemoteOptions.java12
-rw-r--r--src/main/java/com/google/devtools/common/options/IsolatedOptionsData.java32
-rw-r--r--src/main/java/com/google/devtools/common/options/Option.java11
-rw-r--r--src/objc_tools/plmerge/BUILD2
-rw-r--r--src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java5
-rw-r--r--src/test/java/com/google/devtools/common/options/OptionsParserTest.java24
-rw-r--r--src/test/java/com/google/devtools/common/options/TestOptions.java4
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/BUILD2
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/BenchmarkOptions.java69
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/BUILD2
-rw-r--r--src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/GeneratorOptions.java22
-rw-r--r--src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD1
-rw-r--r--src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspaceOptions.java73
-rw-r--r--src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/BUILD1
-rw-r--r--src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/RemoteWorkerOptions.java18
17 files changed, 206 insertions, 77 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/BUILD
index a20987fbe4..eaf4ed6d5e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/BUILD
@@ -19,6 +19,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//third_party:auto_value",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/FeaturePolicyOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/FeaturePolicyOptions.java
index 2b43fc2e06..4bfbacbed4 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/FeaturePolicyOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/featurecontrol/FeaturePolicyOptions.java
@@ -17,7 +17,9 @@ package com.google.devtools.build.lib.analysis.featurecontrol;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionsParser.OptionUsageRestrictions;
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.util.List;
/** The options fragment which defines {@link FeaturePolicyConfiguration}. */
@@ -34,6 +36,8 @@ public final class FeaturePolicyOptions extends FragmentOptions {
+ "features, but each feature must be specified only once.",
valueHelp = "a feature=label pair",
optionUsageRestrictions = OptionUsageRestrictions.UNDOCUMENTED,
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
converter = PolicyEntryConverter.class,
defaultValue = "n/a (default ignored for allowMultiple)",
allowMultiple = true
diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteOptions.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteOptions.java
index d472adae09..203128dab1 100644
--- a/src/main/java/com/google/devtools/build/lib/remote/RemoteOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteOptions.java
@@ -159,6 +159,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry",
defaultValue = "true",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "Whether to retry transient remote execution/cache errors."
)
public boolean experimentalRemoteRetry;
@@ -167,6 +169,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry_start_delay_millis",
defaultValue = "100",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "The initial delay before retrying a transient error."
)
public long experimentalRemoteRetryStartDelayMillis;
@@ -175,6 +179,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry_max_delay_millis",
defaultValue = "5000",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "The maximum delay before retrying a transient error."
)
public long experimentalRemoteRetryMaxDelayMillis;
@@ -183,6 +189,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry_max_attempts",
defaultValue = "5",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "The maximum number of attempts to retry a transient error."
)
public int experimentalRemoteRetryMaxAttempts;
@@ -191,6 +199,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry_multiplier",
defaultValue = "2",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "The multiplier by which to increase the retry delay on transient errors."
)
public double experimentalRemoteRetryMultiplier;
@@ -199,6 +209,8 @@ public final class RemoteOptions extends OptionsBase {
name = "experimental_remote_retry_jitter",
defaultValue = "0.1",
category = "remote",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "The random factor to apply to retry delays on transient errors."
)
public double experimentalRemoteRetryJitter;
diff --git a/src/main/java/com/google/devtools/common/options/IsolatedOptionsData.java b/src/main/java/com/google/devtools/common/options/IsolatedOptionsData.java
index 2d3b4ceed9..6f682ea5ae 100644
--- a/src/main/java/com/google/devtools/common/options/IsolatedOptionsData.java
+++ b/src/main/java/com/google/devtools/common/options/IsolatedOptionsData.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Ordering;
import com.google.devtools.common.options.OptionsParser.ConstructionException;
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -360,6 +361,35 @@ public class IsolatedOptionsData extends OpaqueOptionsData {
booleanAliasMap.put("no" + optionName, optionName);
}
+ private static void checkEffectTagRationality(String optionName, OptionEffectTag[] effectTags) {
+ // Check that there is at least one OptionEffectTag listed.
+ if (effectTags.length < 1) {
+ throw new ConstructionException(
+ "Option "
+ + optionName
+ + " does not list at least one OptionEffectTag. If the option has no effect, "
+ + "please add NO_OP, otherwise, add a tag representing its effect.");
+ } else if (effectTags.length > 1) {
+ // If there are more than 1 tag, make sure that NO_OP and UNKNOWN is not one of them.
+ // These don't make sense if other effects are listed.
+ ImmutableList<OptionEffectTag> tags = ImmutableList.copyOf(effectTags);
+ if (tags.contains(OptionEffectTag.UNKNOWN)) {
+ throw new ConstructionException(
+ "Option "
+ + optionName
+ + " includes UNKNOWN with other, known, effects. Please remove UNKNOWN from "
+ + "the list.");
+ }
+ if (tags.contains(OptionEffectTag.NO_OP)) {
+ throw new ConstructionException(
+ "Option "
+ + optionName
+ + " includes NO_OP with other effects. This doesn't make much sense. Please "
+ + "remove NO_OP or the actual effects from the list, whichever is correct.");
+ }
+ }
+ }
+
/**
* Constructs an {@link IsolatedOptionsData} object for a parser that knows about the given
* {@link OptionsBase} classes. No inter-option analysis is done. Performs basic sanity checking
@@ -407,6 +437,8 @@ public class IsolatedOptionsData extends OpaqueOptionsData {
+ annotation.category() + "\" in option \"" + optionName + "\" is disallowed.");
}
+ checkEffectTagRationality(optionName, annotation.effectTags());
+
Type fieldType = getFieldSingularType(field, annotation);
// For simple, static expansions, don't accept non-Void types.
if (annotation.expansion().length != 0 && !isVoidField(field)) {
diff --git a/src/main/java/com/google/devtools/common/options/Option.java b/src/main/java/com/google/devtools/common/options/Option.java
index 7489bd668d..e6c9207d98 100644
--- a/src/main/java/com/google/devtools/common/options/Option.java
+++ b/src/main/java/com/google/devtools/common/options/Option.java
@@ -92,24 +92,23 @@ public @interface Option {
*
* <p>For undocumented flags that aren't listed anywhere, this is currently a no-op. Feel free to
* set the value that it would have if it were documented, which might be helpful if a flag is
- * part of an experimental feature that might become documented in the future, or just leave it
- * unset as the default.
+ * part of an experimental feature that might become documented in the future, or just leave it as
+ * OptionDocumentationCategory.UNCATEGORIZED.
*
* <p>For hidden or internal options, use the category field only if it is helpful for yourself or
* other Bazel developers.
*/
- OptionDocumentationCategory documentationCategory() default
- OptionDocumentationCategory.UNCATEGORIZED;
+ OptionDocumentationCategory documentationCategory();
/**
* Tag about the intent or effect of this option. Unless this option is a no-op (and the reason
* for this should be documented) all options should have some effect, so this needs to have at
* least one value.
*
- * <p>No option should list NO_OP_OR_UNKNOWN with other effects listed, but all other combinations
+ * <p>No option should list NO_OP or UNKNOWN with other effects listed, but all other combinations
* are allowed.
*/
- OptionEffectTag[] effectTags() default {OptionEffectTag.UNKNOWN};
+ OptionEffectTag[] effectTags();
/**
* Tag about the state of this option, such as if it gates an experimental feature, or is
diff --git a/src/objc_tools/plmerge/BUILD b/src/objc_tools/plmerge/BUILD
index 49aafc28ca..acaeb9abf8 100644
--- a/src/objc_tools/plmerge/BUILD
+++ b/src/objc_tools/plmerge/BUILD
@@ -8,6 +8,7 @@ java_binary(
deps = [
":plmerge_lib",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//src/main/protobuf:plmerge_java_proto",
"//third_party:guava",
"//third_party/java/dd_plist",
@@ -21,6 +22,7 @@ java_library(
),
deps = [
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//src/main/protobuf:plmerge_java_proto",
"//src/tools/xcode-common/java/com/google/devtools/build/xcode/common",
"//src/tools/xcode-common/java/com/google/devtools/build/xcode/util",
diff --git a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java
index 8f9f558938..8b24917e32 100644
--- a/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java
+++ b/src/objc_tools/plmerge/java/com/google/devtools/build/xcode/plmerge/PlMerge.java
@@ -17,11 +17,12 @@ package com.google.devtools.build.xcode.plmerge;
import com.google.common.base.Strings;
import com.google.devtools.build.xcode.plmerge.proto.PlMergeProtos.Control;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsBase;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.OptionsParsingException;
-
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.FileSystem;
@@ -44,6 +45,8 @@ public class PlMerge {
@Option(
name = "control",
help = "Absolute path of the Control protobuf.",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
defaultValue = "null"
)
public String controlPath;
diff --git a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
index 64d2d24c5c..f931be3831 100644
--- a/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
+++ b/src/test/java/com/google/devtools/common/options/OptionsParserTest.java
@@ -1024,7 +1024,13 @@ public class OptionsParserTest {
}
}
- @Option(name = "badness", expansionFunction = ExpFunc.class, defaultValue = "null")
+ @Option(
+ name = "badness",
+ expansionFunction = ExpFunc.class,
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
+ defaultValue = "null"
+ )
public String badness;
}
@@ -1080,7 +1086,13 @@ public class OptionsParserTest {
/** ExpansionMultipleOptions */
public static class ExpansionMultipleOptions extends OptionsBase {
- @Option(name = "underlying", defaultValue = "null", allowMultiple = true)
+ @Option(
+ name = "underlying",
+ defaultValue = "null",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
+ allowMultiple = true
+ )
public List<String> underlying;
/** ExpFunc */
@@ -1097,7 +1109,13 @@ public class OptionsParserTest {
}
}
- @Option(name = "expands_by_function", defaultValue = "null", expansionFunction = ExpFunc.class)
+ @Option(
+ name = "expands_by_function",
+ defaultValue = "null",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
+ expansionFunction = ExpFunc.class
+ )
public Void expandsByFunction;
}
diff --git a/src/test/java/com/google/devtools/common/options/TestOptions.java b/src/test/java/com/google/devtools/common/options/TestOptions.java
index 9e79e85656..c73009b3ee 100644
--- a/src/test/java/com/google/devtools/common/options/TestOptions.java
+++ b/src/test/java/com/google/devtools/common/options/TestOptions.java
@@ -247,6 +247,8 @@ public class TestOptions extends OptionsBase {
@Option(
name = "test_expansion_function",
defaultValue = "null",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
expansionFunction = TestExpansionFunction.class
)
public Void testExpansionFunction;
@@ -264,6 +266,8 @@ public class TestOptions extends OptionsBase {
@Option(
name = "test_void_expansion_function",
defaultValue = "null",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
expansionFunction = TestVoidExpansionFunction.class
)
public Void testVoidExpansionFunction;
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BUILD b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BUILD
index b44c70fddc..6dae2a1d65 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BUILD
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BUILD
@@ -19,6 +19,7 @@ java_binary(
"//src/main/java/com/google/devtools/build/lib:shell",
"//src/main/java/com/google/devtools/build/lib:vfs",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator:codegenerator_lib",
"//third_party:auto_value",
"//third_party:guava",
@@ -36,6 +37,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:shell",
"//src/main/java/com/google/devtools/build/lib:vfs",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator:codegenerator_lib",
"//third_party:auto_value",
"//third_party:guava",
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BenchmarkOptions.java b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BenchmarkOptions.java
index 971e55e445..840ae744d3 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/BenchmarkOptions.java
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/BenchmarkOptions.java
@@ -15,58 +15,69 @@
package com.google.devtools.build.benchmark;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionsBase;
-
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.util.List;
/** Class that contains arguments for running the benchmark. */
public class BenchmarkOptions extends OptionsBase {
@Option(
- name = "workspace",
- defaultValue = "",
- category = "benchmark",
- valueHelp = "path",
- help = "Directory where we put all the code and results."
+ name = "workspace",
+ defaultValue = "",
+ category = "benchmark",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ valueHelp = "path",
+ help = "Directory where we put all the code and results."
)
public String workspace;
@Option(
- name = "output",
- defaultValue = "",
- category = "benchmark",
- valueHelp = "path",
- help = "Path to put benchmark result (json format)."
+ name = "output",
+ defaultValue = "",
+ category = "benchmark",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ valueHelp = "path",
+ help = "Path to put benchmark result (json format)."
)
public String output;
@Option(
- name = "version_between",
- defaultValue = "",
- category = "version filter",
- valueHelp = "string",
- help = "Use code versions between two versions, eg. 'abcedf..uvwxyz'.",
- converter = VersionFilterConverter.class
+ name = "version_between",
+ defaultValue = "",
+ category = "version filter",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ valueHelp = "string",
+ help = "Use code versions between two versions, eg. 'abcedf..uvwxyz'.",
+ converter = VersionFilterConverter.class
)
public VersionFilter versionFilter;
@Option(
- name = "time_between",
- defaultValue = "",
- category = "time filter",
- valueHelp = "string",
- help = "Use code versions between two time, eg. '2017-01-01 13:00..2017-01-02 08:00'.",
- converter = DateFilterConverter.class
+ name = "time_between",
+ defaultValue = "",
+ category = "time filter",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ valueHelp = "string",
+ help = "Use code versions between two time, eg. '2017-01-01 13:00..2017-01-02 08:00'.",
+ converter = DateFilterConverter.class
)
public DateFilter dateFilter;
@Option(
- name = "versions",
- defaultValue = "",
- category = "version",
- valueHelp = "list of strings",
- allowMultiple = true,
- help = "Use code versions as listed."
+ name = "versions",
+ defaultValue = "",
+ category = "version",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ valueHelp = "list of strings",
+ allowMultiple = true,
+ help = "Use code versions as listed."
)
public List<String> versions;
}
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/BUILD b/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/BUILD
index 76a2ad8952..763b9daadc 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/BUILD
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/BUILD
@@ -6,6 +6,7 @@ java_binary(
main_class = "com.google.devtools.build.benchmark.codegenerator.Main",
deps = [
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//third_party:guava",
"//third_party/java/javapoet",
],
@@ -16,6 +17,7 @@ java_library(
srcs = glob(["*.java"]),
deps = [
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//third_party:guava",
"//third_party/java/javapoet",
],
diff --git a/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/GeneratorOptions.java b/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/GeneratorOptions.java
index 59c828328a..6524fadb7f 100644
--- a/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/GeneratorOptions.java
+++ b/src/tools/benchmark/java/com/google/devtools/build/benchmark/codegenerator/GeneratorOptions.java
@@ -15,8 +15,9 @@
package com.google.devtools.build.benchmark.codegenerator;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionsBase;
-
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.util.List;
/** Class that contains arguments for the java files generator. */
@@ -26,6 +27,8 @@ public class GeneratorOptions extends OptionsBase {
name = "modify",
defaultValue = "false",
category = "generator",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
help = "if we modify the existing code (or generate new code)."
)
public boolean modificationMode;
@@ -34,18 +37,23 @@ public class GeneratorOptions extends OptionsBase {
name = "output_dir",
defaultValue = "",
category = "generator",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
valueHelp = "path",
help = "directory where we put generated code or modify the existing code."
)
public String outputDir;
@Option(
- name = "project_name",
- defaultValue = "",
- category = "generator",
- allowMultiple = true,
- help = "which project we should generate,"
- + " available: AFewFiles, ManyFiles, LongChainedDeps, ParallelDeps"
+ name = "project_name",
+ defaultValue = "",
+ category = "generator",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.NO_OP},
+ allowMultiple = true,
+ help =
+ "which project we should generate,"
+ + " available: AFewFiles, ManyFiles, LongChainedDeps, ParallelDeps"
)
public List<String> projectNames;
}
diff --git a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
index ee318dc912..fcd4d00b7f 100644
--- a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
+++ b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/BUILD
@@ -13,6 +13,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:unix",
"//src/main/java/com/google/devtools/build/lib:vfs",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/maven",
"//src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/maven:rule",
"//third_party:guava",
diff --git a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspaceOptions.java b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspaceOptions.java
index 7e9011bd0d..6dcd77aded 100644
--- a/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspaceOptions.java
+++ b/src/tools/generate_workspace/src/main/java/com/google/devtools/build/workspace/GenerateWorkspaceOptions.java
@@ -15,8 +15,9 @@
package com.google.devtools.build.workspace;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionsBase;
-
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.util.List;
/**
@@ -24,51 +25,61 @@ import java.util.List;
*/
public class GenerateWorkspaceOptions extends OptionsBase {
@Option(
- name = "help",
- abbrev = 'h',
- help = "Prints usage info.",
- defaultValue = "true"
+ name = "help",
+ abbrev = 'h',
+ help = "Prints usage info.",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = "true"
)
public boolean help;
@Option(
- name = "bazel_project",
- abbrev = 'b',
- help = "Directory contains a Bazel project.",
- allowMultiple = true,
- category = "input",
- defaultValue = ""
+ name = "bazel_project",
+ abbrev = 'b',
+ help = "Directory contains a Bazel project.",
+ allowMultiple = true,
+ category = "input",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = ""
)
public List<String> bazelProjects;
@Option(
- name = "maven_project",
- abbrev = 'm',
- help = "Directory containing a Maven project.",
- allowMultiple = true,
- category = "input",
- defaultValue = ""
+ name = "maven_project",
+ abbrev = 'm',
+ help = "Directory containing a Maven project.",
+ allowMultiple = true,
+ category = "input",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = ""
)
public List<String> mavenProjects;
@Option(
- name = "artifact",
- abbrev = 'a',
- help = "Maven artifact coordinates (e.g. groupId:artifactId:version).",
- allowMultiple = true,
- category = "input",
- defaultValue = ""
+ name = "artifact",
+ abbrev = 'a',
+ help = "Maven artifact coordinates (e.g. groupId:artifactId:version).",
+ allowMultiple = true,
+ category = "input",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = ""
)
public List<String> artifacts;
-
+
@Option(
- name = "output_dir",
- abbrev = 'o',
- help = "Output directory to store the WORKSPACE and BUILD files. If unspecified, a temporary"
- + " directory is used.",
- category = "output",
- defaultValue = ""
+ name = "output_dir",
+ abbrev = 'o',
+ help =
+ "Output directory to store the WORKSPACE and BUILD files. If unspecified, a temporary"
+ + " directory is used.",
+ category = "output",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ defaultValue = ""
)
public String outputDir;
-
}
diff --git a/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/BUILD b/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/BUILD
index 9104f3c8bc..7e85b240e0 100644
--- a/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/BUILD
+++ b/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/BUILD
@@ -27,6 +27,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:vfs",
"//src/main/java/com/google/devtools/build/lib/remote",
"//src/main/java/com/google/devtools/common/options",
+ "//src/main/protobuf:option_filters_java_proto",
"//third_party:guava",
"//third_party:hazelcast",
"//third_party:netty",
diff --git a/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/RemoteWorkerOptions.java b/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/RemoteWorkerOptions.java
index bb8e976def..686761f9ed 100644
--- a/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/RemoteWorkerOptions.java
+++ b/src/tools/remote_worker/src/main/java/com/google/devtools/build/remote/RemoteWorkerOptions.java
@@ -15,7 +15,9 @@
package com.google.devtools.build.remote;
import com.google.devtools.common.options.Option;
+import com.google.devtools.common.options.OptionDocumentationCategory;
import com.google.devtools.common.options.OptionsBase;
+import com.google.devtools.common.options.proto.OptionFilters.OptionEffectTag;
import java.util.List;
/** Options for remote worker. */
@@ -24,6 +26,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "listen_port",
defaultValue = "8080",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "Listening port for the netty server."
)
public int listenPort;
@@ -32,6 +36,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "work_path",
defaultValue = "null",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "A directory for the build worker to do work."
)
public String workPath;
@@ -40,6 +46,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "debug",
defaultValue = "false",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help =
"Turn this on for debugging remote job failures. There will be extra messages and the "
+ "work directory will be preserved in the case of failure."
@@ -50,6 +58,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "pid_file",
defaultValue = "null",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "File for writing the process id for this worker when it is fully started."
)
public String pidFile;
@@ -58,6 +68,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "sandboxing",
defaultValue = "false",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "If supported on this platform, use sandboxing for increased hermeticity."
)
public boolean sandboxing;
@@ -66,6 +78,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "sandboxing_writable_path",
defaultValue = "",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
allowMultiple = true,
help = "When using sandboxing, allow running actions to write to this path."
)
@@ -75,6 +89,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "sandboxing_tmpfs_dir",
defaultValue = "",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
allowMultiple = true,
help = "When using sandboxing, mount an empty tmpfs onto this path for each running action."
)
@@ -84,6 +100,8 @@ public class RemoteWorkerOptions extends OptionsBase {
name = "sandboxing_block_network",
defaultValue = "false",
category = "build_worker",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
help = "When using sandboxing, block network access for running actions."
)
public boolean sandboxingBlockNetwork;