Skip to content

Commit a4e49a5

Browse files
author
Peter Amstutz
committed
Don't parse command line twice, just allow caller to call into main with processed args.
1 parent f594c5b commit a4e49a5

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed

cwltool/draft2tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ def collect_output_ports(self, ports, builder, outdir):
298298
custom_output = os.path.join(outdir, "cwl.output.json")
299299
if builder.fs_access.exists(custom_output):
300300
with builder.fs_access.open(custom_output, "r") as f:
301-
ret = yaml.load(f)
301+
ret = json.load(f)
302302
_logger.debug(u"Raw output from %s: %s", custom_output, json.dumps(ret, indent=4))
303303
adjustFileObjs(ret, remove_hostfs)
304304
adjustFileObjs(ret,

cwltool/main.py

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ def generate_parser(toolparser, tool, namemap):
301301
return toolparser
302302

303303

304-
def load_job_order(args, t, parser, stdin, print_input_deps=False, relative_deps=False, stdout=sys.stdout):
304+
def load_job_order(args, t, stdin, print_input_deps=False, relative_deps=False, stdout=sys.stdout):
305305
# type: (argparse.Namespace, Process, argparse.ArgumentParser, IO[Any], bool, bool, IO[Any]) -> Union[int,Tuple[Dict[str,Any],str]]
306306

307307
job_order_object = None
@@ -367,12 +367,11 @@ def load_job_order(args, t, parser, stdin, print_input_deps=False, relative_deps
367367
job_order_object[shortname(inp["id"])] = inp["default"]
368368

369369
if not job_order_object and len(t.tool["inputs"]) > 0:
370-
parser.print_help()
371370
if toolparser:
372371
print u"\nOptions for %s " % args.workflow
373372
toolparser.print_help()
374373
_logger.error("")
375-
_logger.error("Input object required")
374+
_logger.error("Input object required, use --help for details")
376375
return 1
377376

378377
if print_input_deps:
@@ -427,31 +426,29 @@ def versionstring():
427426

428427

429428
def main(argsl=None,
429+
args=None,
430430
executor=single_job_executor,
431431
makeTool=workflow.defaultMakeTool,
432432
selectResources=None,
433-
parser=None,
434433
stdin=sys.stdin,
435434
stdout=sys.stdout,
436435
stderr=sys.stderr,
437-
versionfunc=versionstring):
436+
versionfunc=versionstring,
437+
job_order_object=None):
438438
# type: (List[str],Callable[...,Union[str,Dict[str,str]]],Callable[...,Process],Callable[[Dict[str,int]],Dict[str,int]],argparse.ArgumentParser,IO[Any],IO[Any],IO[Any],Callable[[],unicode]) -> int
439439

440440
_logger.removeHandler(defaultStreamHandler)
441441
stderr_handler = logging.StreamHandler(stderr)
442442
_logger.addHandler(stderr_handler)
443443
try:
444-
if argsl is None:
445-
argsl = sys.argv[1:]
446-
447-
if parser is None:
448-
parser = arg_parser()
449-
450-
args = parser.parse_args(argsl)
451-
452-
# If caller provided a custom parser, it may be not every option is
453-
# set, so fill in no-op defaults to avoid crashing when dereferencing
454-
# them in args.
444+
if args is None:
445+
if argsl is None:
446+
argsl = sys.argv[1:]
447+
args = arg_parser().parse_args(argsl)
448+
449+
# If caller provided custom arguments, it may be not every expected
450+
# option is set, so fill in no-op defaults to avoid crashing when
451+
# dereferencing them in args.
455452
for k,v in {'print_deps': False,
456453
'print_pre': False,
457454
'print_rdf': False,
@@ -486,9 +483,8 @@ def main(argsl=None,
486483
_logger.info(versionfunc())
487484

488485
if not args.workflow:
489-
parser.print_help()
490486
_logger.error("")
491-
_logger.error("CWL document required")
487+
_logger.error("CWL document required, try --help for details")
492488
return 1
493489

494490
try:
@@ -550,10 +546,11 @@ def main(argsl=None,
550546
_logger.error("Temporary directory prefix doesn't exist.")
551547
return 1
552548

553-
job_order_object = load_job_order(args, tool, parser, stdin,
554-
print_input_deps=args.print_input_deps,
555-
relative_deps=args.relative_deps,
556-
stdout=stdout)
549+
if job_order_object is None:
550+
job_order_object = load_job_order(args, tool, stdin,
551+
print_input_deps=args.print_input_deps,
552+
relative_deps=args.relative_deps,
553+
stdout=stdout)
557554

558555
if isinstance(job_order_object, int):
559556
return job_order_object

0 commit comments

Comments
 (0)