diff options
author | 2016-10-13 11:56:18 +0000 | |
---|---|---|
committer | 2016-10-13 14:29:04 +0000 | |
commit | 2891ec527eed27d0c6460d66f51cb66a43373b6a (patch) | |
tree | fbd18edf1e8560be3673434132e8ed187514f20d /src/main/java/com/google/devtools/common | |
parent | 7b1708c64fe98a7db3911f9f91e6b07d28111e73 (diff) |
Make --watchfs a common command option.
Adding an options parameter to DiffAwareness#getCurrentView seems like the
simplest way to achieve that.
Alternatives considered:
1. Making the diff awareness modules stateful. However, I did not want to do so
as I've also been working on improving the module API to reduce state, or at
least to have a proper lifecycle management for any necessary state.
2. Making the watchFs flag a constructor parameter. However, that would also
invalidate any implementations that don't use the flag (of which we have
several).
3. Only passing in a single boolean flag instead of an options class provider;
however, this is a more principled, futureproof API, which allows other
modules / awareness implementations to use their own options.
RELNOTES: --watchfs is now a command option; the startup option of the same
name is deprecated. I.e., use bazel build --watchfs, not blaze --watchfs
build.
--
MOS_MIGRATED_REVID=136026835
Diffstat (limited to 'src/main/java/com/google/devtools/common')
-rw-r--r-- | src/main/java/com/google/devtools/common/options/OptionsClassProvider.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/common/options/OptionsClassProvider.java b/src/main/java/com/google/devtools/common/options/OptionsClassProvider.java index 90e7d48d1c..b28c29d3dc 100644 --- a/src/main/java/com/google/devtools/common/options/OptionsClassProvider.java +++ b/src/main/java/com/google/devtools/common/options/OptionsClassProvider.java @@ -13,11 +13,20 @@ // limitations under the License. package com.google.devtools.common.options; +import javax.annotation.Nullable; + /** * A read-only interface for options parser results, which only allows to query the options of * a specific class, but not e.g. the residue any other information pertaining to the command line. */ public interface OptionsClassProvider { + public static final OptionsClassProvider EMPTY = new OptionsClassProvider() { + @Override @Nullable + public <O extends OptionsBase> O getOptions(Class<O> optionsClass) { + return null; + } + }; + /** * Returns the options instance for the given {@code optionsClass}, that is, * the parsed options, or null if it is not among those available. @@ -25,5 +34,5 @@ public interface OptionsClassProvider { * <p>The returned options should be treated by library code as immutable and * a provider is permitted to return the same options instance multiple times. */ - <O extends OptionsBase> O getOptions(Class<O> optionsClass); + @Nullable <O extends OptionsBase> O getOptions(Class<O> optionsClass); } |