|
24 | 24 | from .pathmapper import PathMapper
|
25 | 25 | from .job import CommandLineJob
|
26 | 26 |
|
27 |
| -ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._-]+$") |
| 27 | +ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._+-]+$") |
28 | 28 |
|
29 | 29 | from .flatten import flatten
|
30 | 30 |
|
@@ -92,7 +92,7 @@ def revmap_file(builder, outdir, f):
|
92 | 92 | f["location"] = revmap_f[1]
|
93 | 93 | return f
|
94 | 94 | elif f["path"].startswith(builder.outdir):
|
95 |
| - f["location"] = os.path.join(outdir, f["path"][len(builder.outdir)+1:]) |
| 95 | + f["location"] = builder.fs_access.join(outdir, f["path"][len(builder.outdir)+1:]) |
96 | 96 | return f
|
97 | 97 | else:
|
98 | 98 | raise WorkflowException(u"Output file path %s must be within designated output directory (%s) or an input file pass through." % (f["path"], builder.outdir))
|
@@ -344,7 +344,7 @@ def collect_output_ports(self, ports, builder, outdir):
|
344 | 344 | # type: (Set[Dict[str,Any]], Builder, str) -> Dict[unicode, Union[unicode, List[Any], Dict[unicode, Any]]]
|
345 | 345 | try:
|
346 | 346 | ret = {} # type: Dict[unicode, Union[unicode, List[Any], Dict[unicode, Any]]]
|
347 |
| - custom_output = os.path.join(outdir, "cwl.output.json") |
| 347 | + custom_output = builder.fs_access.join(outdir, "cwl.output.json") |
348 | 348 | if builder.fs_access.exists(custom_output):
|
349 | 349 | with builder.fs_access.open(custom_output, "r") as f:
|
350 | 350 | ret = json.load(f)
|
@@ -400,7 +400,7 @@ def collect_output(self, schema, builder, outdir):
|
400 | 400 | try:
|
401 | 401 | r.extend([{"location": g,
|
402 | 402 | "class": "File" if builder.fs_access.isfile(g) else "Directory"}
|
403 |
| - for g in builder.fs_access.glob(os.path.join(outdir, gb))]) |
| 403 | + for g in builder.fs_access.glob(builder.fs_access.join(outdir, gb))]) |
404 | 404 | except (OSError, IOError) as e:
|
405 | 405 | _logger.warn(str(e))
|
406 | 406 |
|
|
0 commit comments