Skip to content

Commit 9867c93

Browse files
authored
Merge pull request #980 from common-workflow-language/file_literal_fix
File literal + stdin
2 parents 8ed6838 + 4d1f21c commit 9867c93

File tree

4 files changed

+148
-131
lines changed

4 files changed

+148
-131
lines changed

cwltool/job.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,23 @@
1818

1919
import shellescape
2020
from prov.model import PROV
21-
from schema_salad.sourceline import SourceLine
2221
from six import PY2, with_metaclass
2322
from typing_extensions import (TYPE_CHECKING, # pylint: disable=unused-import
2423
Text)
25-
# move to a regular typing import when Python 3.3-3.6 is no longer supported
24+
from schema_salad.sourceline import SourceLine
2625

2726
from .builder import Builder, HasReqsHints # pylint: disable=unused-import
2827
from .context import RuntimeContext # pylint: disable=unused-import
2928
from .context import getdefault
3029
from .errors import WorkflowException
3130
from .loghandler import _logger
32-
from .pathmapper import (MapperEnt, PathMapper, ensure_writable,
33-
ensure_non_writable)
34-
from .process import UnsupportedRequirement, stageFiles
31+
from .pathmapper import (MapperEnt, PathMapper, # pylint: disable=unused-import
32+
ensure_writable, ensure_non_writable)
33+
from .process import UnsupportedRequirement, stage_files
3534
from .secrets import SecretStore # pylint: disable=unused-import
36-
from .utils import \
37-
bytes2str_in_dicts # pylint: disable=unused-import; pylint: disable=unused-import
38-
from .utils import (DEFAULT_TMP_PREFIX, Directory, copytree_with_merge,
39-
json_dump, json_dumps, onWindows, processes_to_kill,
40-
subprocess)
35+
from .utils import (DEFAULT_TMP_PREFIX, Directory, bytes2str_in_dicts,
36+
copytree_with_merge, json_dump, json_dumps, onWindows,
37+
processes_to_kill, subprocess)
4138

4239
if TYPE_CHECKING:
4340
from .provenance import CreateProvProfile # pylint: disable=unused-import
@@ -265,7 +262,6 @@ def _execute(self,
265262
else:
266263
stdin_path = rmap[1]
267264

268-
269265
stderr_path = None
270266
if self.stderr is not None:
271267
abserr = os.path.join(self.outdir, self.stderr)
@@ -410,14 +406,17 @@ def run(self,
410406
if "PATH" not in env:
411407
env["PATH"] = str(os.environ["PATH"]) if onWindows() else os.environ["PATH"]
412408
if "SYSTEMROOT" not in env and "SYSTEMROOT" in os.environ:
413-
env["SYSTEMROOT"] = str(os.environ["SYSTEMROOT"]) if onWindows() else os.environ["SYSTEMROOT"]
409+
env["SYSTEMROOT"] = str(os.environ["SYSTEMROOT"]) if onWindows() \
410+
else os.environ["SYSTEMROOT"]
414411

415-
stageFiles(self.pathmapper, ignoreWritable=True, symLink=True, secret_store=runtimeContext.secret_store)
412+
stage_files(self.pathmapper, ignore_writable=True, symlink=True,
413+
secret_store=runtimeContext.secret_store)
416414
if self.generatemapper is not None:
417-
stageFiles(self.generatemapper, ignoreWritable=self.inplace_update,
418-
symLink=True, secret_store=runtimeContext.secret_store)
419-
relink_initialworkdir(self.generatemapper, self.outdir,
420-
self.builder.outdir, inplace_update=self.inplace_update)
415+
stage_files(self.generatemapper, ignore_writable=self.inplace_update,
416+
symlink=True, secret_store=runtimeContext.secret_store)
417+
relink_initialworkdir(
418+
self.generatemapper, self.outdir, self.builder.outdir,
419+
inplace_update=self.inplace_update)
421420

422421
self._execute([], env, runtimeContext)
423422

@@ -481,12 +480,12 @@ def create_file_and_add_volume(self,
481480
volume, # type: MapperEnt
482481
host_outdir_tgt, # type: Optional[Text]
483482
secret_store # type: Optional[SecretStore]
484-
): # type: (...) -> None
483+
): # type: (...) -> Text
485484
"""Create the file and add a mapping."""
486485
if not host_outdir_tgt:
487486
new_file = os.path.join(
488487
tempfile.mkdtemp(dir=self.tmpdir),
489-
os.path.basename(volume.resolved))
488+
os.path.basename(volume.target))
490489
writable = True if volume.type == "CreateWritableFile" else False
491490
if secret_store:
492491
contents = secret_store.retrieve(volume.resolved)
@@ -504,7 +503,7 @@ def create_file_and_add_volume(self,
504503
ensure_writable(host_outdir_tgt or new_file)
505504
else:
506505
ensure_non_writable(host_outdir_tgt or new_file)
507-
506+
return host_outdir_tgt or new_file
508507

509508

510509
def add_volumes(self,
@@ -516,7 +515,7 @@ def add_volumes(self,
516515
"""Append volume mappings to the runtime option list."""
517516

518517
container_outdir = self.builder.outdir
519-
for vol in (itm[1] for itm in pathmapper.items() if itm[1].staged):
518+
for key, vol in (itm for itm in pathmapper.items() if itm[1].staged):
520519
host_outdir_tgt = None # type: Optional[Text]
521520
if vol.target.startswith(container_outdir + "/"):
522521
host_outdir_tgt = os.path.join(
@@ -535,11 +534,12 @@ def add_volumes(self,
535534
self.add_writable_directory_volume(
536535
runtime, vol, host_outdir_tgt)
537536
elif vol.type in ["CreateFile", "CreateWritableFile"]:
538-
self.create_file_and_add_volume(
537+
new_path = self.create_file_and_add_volume(
539538
runtime, vol, host_outdir_tgt, secret_store)
539+
pathmapper.update(
540+
key, new_path, vol.target, vol.type, vol.staged)
540541

541-
def run(self, runtimeContext):
542-
# type: (RuntimeContext) -> None
542+
def run(self, runtimeContext): # type: (RuntimeContext) -> None
543543
if not os.path.exists(self.tmpdir):
544544
os.makedirs(self.tmpdir)
545545
(docker_req, docker_is_req) = self.get_requirement("DockerRequirement")

0 commit comments

Comments
 (0)