4042: expand list fix
[arvados.git] / crunch_scripts / run-command
index 0d45fabced014e42495f55a2a08a1eda8ff88951..40fb7128b2558bc0e5ebe2d6063135f5513d1597 100755 (executable)
@@ -91,10 +91,12 @@ def expand_item(p, c):
                 params[var] = i
                 r.extend(expand_list(params, c["command"]))
             return r
-        if "list" in c and "index" in c:
+        if "list" in c and "index" in c and "command" in c:
             var = c["list"]
             items = get_items(p, p[var])
-            return items[int(c["index"])]
+            params = copy.copy(p)
+            params[var] = items[int(c["index"])]
+            return expand_list(params, c["command"])
     elif isinstance(c, list):
         return expand_list(p, c)
     elif isinstance(c, str) or isinstance(c, unicode):
@@ -103,7 +105,10 @@ def expand_item(p, c):
     return []
 
 def expand_list(p, l):
-    return [exp for arg in l for exp in expand_item(p, arg)]
+    if isinstance(l, basestring):
+        return [expand_item(p, l)]
+    else:
+        return [exp for arg in l for exp in expand_item(p, arg)]
 
 def add_to_group(gr, match):
     m = ('^_^').join(match.groups())