diff options
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; |