@@ -206,7 +206,7 @@ def output_callback(out, processStatus):
206
206
207
207
output_dirs = set ()
208
208
finaloutdir = kwargs .get ("outdir" )
209
- kwargs ["outdir" ] = tempfile .mkdtemp ()
209
+ kwargs ["outdir" ] = tempfile .mkdtemp (prefix = kwargs [ "tmp_outdir_prefix" ]) if kwargs . get ( "tmp_outdir_prefix" ) else tempfile . mkdtemp ( )
210
210
output_dirs .add (kwargs ["outdir" ])
211
211
212
212
jobReqs = None
@@ -678,20 +678,22 @@ def main(argsl=None, # type: List[str]
678
678
if isinstance (tool , int ):
679
679
return tool
680
680
681
- if args .tmp_outdir_prefix != 'tmp' :
682
- # Use user defined temp directory (if it exists)
683
- setattr (args , 'tmp_outdir_prefix' ,
684
- os .path .abspath (args .tmp_outdir_prefix ))
685
- if not os .path .exists (args .tmp_outdir_prefix ):
686
- _logger .error ("Intermediate output directory prefix doesn't exist." )
687
- return 1
681
+ for dirprefix in ("tmpdir_prefix" , "tmp_outdir_prefix" , "cachedir" ):
682
+ if getattr (args , dirprefix ) and getattr (args , dirprefix ) != 'tmp' :
683
+ sl = "/" if getattr (args , dirprefix ).endswith ("/" ) or dirprefix == "cachedir" else ""
684
+ setattr (args , dirprefix ,
685
+ os .path .abspath (getattr (args , dirprefix ))+ sl )
686
+ if not os .path .exists (os .path .dirname (getattr (args , dirprefix ))):
687
+ try :
688
+ os .makedirs (os .path .dirname (getattr (args , dirprefix )))
689
+ except Exception as e :
690
+ _logger .error ("Failed to create directory: %s" , e )
691
+ return 1
688
692
689
- if args .tmpdir_prefix != 'tmp' :
690
- # Use user defined prefix (if the folder exists)
691
- setattr (args , 'tmpdir_prefix' , os .path .abspath (args .tmpdir_prefix ))
692
- if not os .path .exists (args .tmpdir_prefix ):
693
- _logger .error ("Temporary directory prefix doesn't exist." )
694
- return 1
693
+ if args .cachedir :
694
+ if args .move_outputs == "move" :
695
+ setattr (args , 'move_outputs' , "copy" )
696
+ setattr (args , "tmp_outdir_prefix" , args .cachedir )
695
697
696
698
if job_order_object is None :
697
699
job_order_object = load_job_order (args , tool , stdin ,
@@ -703,14 +705,7 @@ def main(argsl=None, # type: List[str]
703
705
if isinstance (job_order_object , int ):
704
706
return job_order_object
705
707
706
- if args .cachedir :
707
- setattr (args , 'cachedir' , os .path .abspath (args .cachedir ))
708
- if args .move_outputs == "move" :
709
- setattr (args , 'move_outputs' , "copy" )
710
-
711
708
try :
712
- setattr (args , 'tmp_outdir_prefix' ,
713
- args .cachedir if args .cachedir else args .tmp_outdir_prefix )
714
709
setattr (args , 'basedir' , job_order_object [1 ])
715
710
del args .workflow
716
711
del args .job_order
0 commit comments