aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
index 13a30b05f8..0a48b2c50f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CommandHelper.java
@@ -37,6 +37,8 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import javax.annotation.Nullable;
+
/**
* Provides shared functionality for parameterized command-line launching
* e.g. {@link com.google.devtools.build.lib.view.genrule.GenRule}
@@ -169,17 +171,20 @@ public final class CommandHelper {
}
/**
- * Resolves the 'cmd' attribute, and expands known locations for $(location)
+ * Resolves a command, and expands known locations for $(location)
* variables.
*/
- @SkylarkCallable(doc = "Experimental.")
public String resolveCommandAndExpandLabels(
- Boolean supportLegacyExpansion, Boolean allowDataInLabel) {
- String command = ruleContext.attributes().get("cmd", Type.STRING);
- command =
- new LocationExpander(ruleContext, labelMap, allowDataInLabel)
- .expandAttribute("cmd", command);
-
+ String command,
+ @Nullable String attribute,
+ Boolean supportLegacyExpansion,
+ Boolean allowDataInLabel) {
+ LocationExpander expander = new LocationExpander(ruleContext, labelMap, allowDataInLabel);
+ if (attribute != null) {
+ command = expander.expandAttribute(attribute, command);
+ } else {
+ command = expander.expand(command);
+ }
if (supportLegacyExpansion) {
command = expandLabels(command, labelMap);
}
@@ -187,6 +192,20 @@ public final class CommandHelper {
}
/**
+ * Resolves the 'cmd' attribute, and expands known locations for $(location)
+ * variables.
+ */
+ @SkylarkCallable(doc = "Experimental.")
+ public String resolveCommandAndExpandLabels(
+ Boolean supportLegacyExpansion, Boolean allowDataInLabel) {
+ return resolveCommandAndExpandLabels(
+ ruleContext.attributes().get("cmd", Type.STRING),
+ "cmd",
+ supportLegacyExpansion,
+ allowDataInLabel);
+ }
+
+ /**
* Expands labels occurring in the string "expr" in the rule 'cmd'.
* Each label must be valid, be a declared prerequisite, and expand to a
* unique path.