@@ -649,17 +649,27 @@ def collect_output(self, schema, builder, outdir, fs_access, compute_checksum=Tr
649
649
for primary in aslist (r ):
650
650
if isinstance (primary , dict ):
651
651
primary .setdefault ("secondaryFiles" , [])
652
+ prefix = primary ["path" ][0 :primary ["path" ].rindex ("/" )+ 1 ]
652
653
for sf in aslist (schema ["secondaryFiles" ]):
653
654
if isinstance (sf , dict ) or "$(" in sf or "${" in sf :
654
655
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
657
657
else :
658
- sfpath = {"path" : substitute (primary ["path" ], sf ), "class" : "File" }
658
+ sfpath = sf
659
+ subst = True
659
660
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 }
660
666
if "path" in sfitem and "location" not in sfitem :
661
667
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"
663
673
primary ["secondaryFiles" ].append (sfitem )
664
674
665
675
# Ensure files point to local references outside of the run environment
0 commit comments