Skip to content

Commit 3416fea

Browse files
tetronmr-c
authored andcommitted
If a returned File object has same location, replace previous one.
1 parent 427eb65 commit 3416fea

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

cwltool/builder.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,10 @@ def _capture_files(f): # type: (Dict[str, str]) -> Dict[str, str]
398398
]
399399
+ sfname
400400
)
401+
sfbasename = sfname
401402
elif isinstance(sfname, MutableMapping):
402403
sf_location = sfname["location"]
403-
sfname = sfname["basename"]
404+
sfbasename = sfname["basename"]
404405
else:
405406
raise WorkflowException(
406407
"Expected secondaryFile expression to return type 'str' or 'MutableMapping', received '%s'"
@@ -412,16 +413,23 @@ def _capture_files(f): # type: (Dict[str, str]) -> Dict[str, str]
412413
d["basename"] = d["location"][
413414
d["location"].rindex("/") + 1 :
414415
]
415-
if d["basename"] == sfname:
416+
if d["basename"] == sfbasename:
416417
found = True
418+
417419
if not found:
420+
def addsf(files, newsf):
421+
for f in files:
422+
if f["location"] == newsf["location"]:
423+
f["basename"] = newsf["basename"]
424+
return
425+
files.append(newsf)
426+
418427
if isinstance(sfname, MutableMapping):
419-
datum["secondaryFiles"].append(sfname)
428+
addsf(datum["secondaryFiles"], sfname)
420429
elif discover_secondaryFiles and self.fs_access.exists(
421430
sf_location
422431
):
423-
datum["secondaryFiles"].append(
424-
{
432+
addsf(datum["secondaryFiles"], {
425433
"location": sf_location,
426434
"basename": sfname,
427435
"class": "File",

0 commit comments

Comments
 (0)