aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/cmdline
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-01-25 12:31:53 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-25 12:33:49 -0800
commit6e10efac41ea0f85130585d44df2f0565ea8d6fa (patch)
tree74363aa2b367b611d4ceba71cbcb55672d1148ca /src/main/java/com/google/devtools/build/lib/cmdline
parenteb0150b5e3b95d011e99e6f531c962831beaa109 (diff)
Add CommandLineItem interface.
This interface makes it clearer in the type system exactly how items that go into a CustomCommandLine are turned into strings. It is a preparatory change to allow command line fingerprints to be more cheaply calculated, but it is valuable in itself from a code quality standpoint. PiperOrigin-RevId: 183274022
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/cmdline')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java9
2 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
index 2883d4277a..5ce3b757be 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD
@@ -18,6 +18,7 @@ java_library(
visibility = ["//src:__subpackages__"],
deps = [
"//src/main/java/com/google/devtools/build/lib:base-util",
+ "//src/main/java/com/google/devtools/build/lib:commandline_item",
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/concurrent",
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index 47a7d7bc17..2fbb2a4217 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -17,6 +17,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Interner;
+import com.google.devtools.build.lib.analysis.actions.CommandLineItem;
import com.google.devtools.build.lib.cmdline.LabelValidator.BadLabelException;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -53,7 +54,8 @@ import javax.annotation.Nullable;
)
@Immutable
@ThreadSafe
-public final class Label implements Comparable<Label>, Serializable, SkylarkValue, SkyKey {
+public final class Label
+ implements Comparable<Label>, Serializable, SkylarkValue, SkyKey, CommandLineItem {
public static final PathFragment EXTERNAL_PACKAGE_NAME = PathFragment.create("external");
public static final PathFragment WORKSPACE_FILE_NAME = PathFragment.create("WORKSPACE");
public static final String DEFAULT_REPOSITORY_DIRECTORY = "__main__";
@@ -573,6 +575,11 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkValu
printer.append(getCanonicalForm());
}
+ @Override
+ public String expandToCommandLine() {
+ return getCanonicalForm();
+ }
+
/**
* Specialization of {@link Arrays#hashCode()} that does not require constructing a 2-element
* array.