18
18
19
19
import shellescape
20
20
from prov .model import PROV
21
- from schema_salad .sourceline import SourceLine
22
21
from six import PY2 , with_metaclass
23
22
from typing_extensions import (TYPE_CHECKING , # pylint: disable=unused-import
24
23
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
26
25
27
26
from .builder import Builder , HasReqsHints # pylint: disable=unused-import
28
27
from .context import RuntimeContext # pylint: disable=unused-import
29
28
from .context import getdefault
30
29
from .errors import WorkflowException
31
30
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
35
34
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 )
41
38
42
39
if TYPE_CHECKING :
43
40
from .provenance import CreateProvProfile # pylint: disable=unused-import
@@ -265,7 +262,6 @@ def _execute(self,
265
262
else :
266
263
stdin_path = rmap [1 ]
267
264
268
-
269
265
stderr_path = None
270
266
if self .stderr is not None :
271
267
abserr = os .path .join (self .outdir , self .stderr )
@@ -410,14 +406,17 @@ def run(self,
410
406
if "PATH" not in env :
411
407
env ["PATH" ] = str (os .environ ["PATH" ]) if onWindows () else os .environ ["PATH" ]
412
408
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" ]
414
411
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 )
416
414
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 )
421
420
422
421
self ._execute ([], env , runtimeContext )
423
422
@@ -481,12 +480,12 @@ def create_file_and_add_volume(self,
481
480
volume , # type: MapperEnt
482
481
host_outdir_tgt , # type: Optional[Text]
483
482
secret_store # type: Optional[SecretStore]
484
- ): # type: (...) -> None
483
+ ): # type: (...) -> Text
485
484
"""Create the file and add a mapping."""
486
485
if not host_outdir_tgt :
487
486
new_file = os .path .join (
488
487
tempfile .mkdtemp (dir = self .tmpdir ),
489
- os .path .basename (volume .resolved ))
488
+ os .path .basename (volume .target ))
490
489
writable = True if volume .type == "CreateWritableFile" else False
491
490
if secret_store :
492
491
contents = secret_store .retrieve (volume .resolved )
@@ -504,7 +503,7 @@ def create_file_and_add_volume(self,
504
503
ensure_writable (host_outdir_tgt or new_file )
505
504
else :
506
505
ensure_non_writable (host_outdir_tgt or new_file )
507
-
506
+ return host_outdir_tgt or new_file
508
507
509
508
510
509
def add_volumes (self ,
@@ -516,7 +515,7 @@ def add_volumes(self,
516
515
"""Append volume mappings to the runtime option list."""
517
516
518
517
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 ):
520
519
host_outdir_tgt = None # type: Optional[Text]
521
520
if vol .target .startswith (container_outdir + "/" ):
522
521
host_outdir_tgt = os .path .join (
@@ -535,11 +534,12 @@ def add_volumes(self,
535
534
self .add_writable_directory_volume (
536
535
runtime , vol , host_outdir_tgt )
537
536
elif vol .type in ["CreateFile" , "CreateWritableFile" ]:
538
- self .create_file_and_add_volume (
537
+ new_path = self .create_file_and_add_volume (
539
538
runtime , vol , host_outdir_tgt , secret_store )
539
+ pathmapper .update (
540
+ key , new_path , vol .target , vol .type , vol .staged )
540
541
541
- def run (self , runtimeContext ):
542
- # type: (RuntimeContext) -> None
542
+ def run (self , runtimeContext ): # type: (RuntimeContext) -> None
543
543
if not os .path .exists (self .tmpdir ):
544
544
os .makedirs (self .tmpdir )
545
545
(docker_req , docker_is_req ) = self .get_requirement ("DockerRequirement" )
0 commit comments