Skip to content

Commit d033349

Browse files
author
Peter Amstutz
committed
Handle lists returned by expressions in secondaryFiles.
1 parent 0bb2f21 commit d033349

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

cwltool/draft2tool.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -649,17 +649,27 @@ def collect_output(self, schema, builder, outdir, fs_access, compute_checksum=Tr
649649
for primary in aslist(r):
650650
if isinstance(primary, dict):
651651
primary.setdefault("secondaryFiles", [])
652+
prefix = primary["path"][0:primary["path"].rindex("/")+1]
652653
for sf in aslist(schema["secondaryFiles"]):
653654
if isinstance(sf, dict) or "$(" in sf or "${" in sf:
654655
sfpath = builder.do_eval(sf, context=primary)
655-
if isinstance(sfpath, string_types):
656-
sfpath = {"path": primary["path"][0:primary["path"].rindex("/")+1]+sfpath, "class": "File"}
656+
subst = False
657657
else:
658-
sfpath = {"path": substitute(primary["path"], sf), "class": "File"}
658+
sfpath = sf
659+
subst = True
659660
for sfitem in aslist(sfpath):
661+
if isinstance(sfitem, string_types):
662+
if subst:
663+
sfitem = {"path": substitute(primary["path"], sfitem)}
664+
else:
665+
sfitem = {"path": prefix+sfitem}
660666
if "path" in sfitem and "location" not in sfitem:
661667
revmap(sfitem)
662-
if fs_access.exists(sfitem["location"]):
668+
if fs_access.isfile(sfitem["location"]):
669+
sfitem["class"] = "File"
670+
primary["secondaryFiles"].append(sfitem)
671+
elif fs_access.isdir(sfitem["location"]):
672+
sfitem["class"] = "Directory"
663673
primary["secondaryFiles"].append(sfitem)
664674

665675
# Ensure files point to local references outside of the run environment

0 commit comments

Comments
 (0)