Description redacted.
--
MOS_MIGRATED_REVID=104886879
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 13a30b0..0a48b2c 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.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,21 +171,38 @@
   }
 
   /**
+   * Resolves a command, and expands known locations for $(location)
+   * variables.
+   */
+  public String resolveCommandAndExpandLabels(
+      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);
+    }
+    return command;
+  }
+
+  /**
    * Resolves the 'cmd' attribute, 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);
-
-    if (supportLegacyExpansion) {
-      command = expandLabels(command, labelMap);
-    }
-    return command;
+    return resolveCommandAndExpandLabels(
+        ruleContext.attributes().get("cmd", Type.STRING),
+        "cmd",
+        supportLegacyExpansion,
+        allowDataInLabel);
   }
 
   /**