diff options
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.java | 35 |
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. |