Skip to content

Commit e178cfb

Browse files
committed
pull out argument generation into method
1 parent c2a84a8 commit e178cfb

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

cwltool/main.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -293,22 +293,14 @@ class FileAppendAction(FSAppendAction):
293293
class DirectoryAppendAction(FSAppendAction):
294294
objclass = "Directory"
295295

296-
def generate_parser(toolparser, tool, namemap):
297-
# type: (argparse.ArgumentParser, Process, Dict[Text, Text]) -> argparse.ArgumentParser
298-
toolparser.add_argument("job_order", nargs="?", help="Job input json file")
299-
namemap["job_order"] = "job_order"
300296

301-
for inp in tool.tool["inputs"]:
302-
name = shortname(inp["id"])
297+
def add_argument(toolparser, name, inptype, description="", default=None):
298+
# type: (argparse.ArgumentParser, Text, Any, Text, Any) -> None
303299
if len(name) == 1:
304300
flag = "-"
305301
else:
306302
flag = "--"
307303

308-
namemap[name.replace("-", "_")] = name
309-
310-
inptype = inp["type"]
311-
312304
required = True
313305
if isinstance(inptype, list):
314306
if inptype[0] == "null":
@@ -319,10 +311,9 @@ def generate_parser(toolparser, tool, namemap):
319311
_logger.debug(u"Can't make command line argument from %s", inptype)
320312
return None
321313

322-
ahelp = inp.get("description", "").replace("%", "%%")
314+
ahelp = description.replace("%", "%%")
323315
action = None # type: Union[argparse.Action, Text]
324316
atype = None # type: Any
325-
default = None # type: Any
326317

327318
if inptype == "File":
328319
action = cast(argparse.Action, FileAction)
@@ -348,8 +339,7 @@ def generate_parser(toolparser, tool, namemap):
348339
elif inptype == "boolean":
349340
action = "store_true"
350341

351-
if "default" in inp:
352-
default = inp["default"]
342+
if default:
353343
required = False
354344

355345
if not atype and not action:
@@ -365,6 +355,20 @@ def generate_parser(toolparser, tool, namemap):
365355
flag + name, required=required, help=ahelp, action=action,
366356
default=default, **typekw)
367357

358+
359+
def generate_parser(toolparser, tool, namemap):
360+
# type: (argparse.ArgumentParser, Process, Dict[Text, Text]) -> argparse.ArgumentParser
361+
toolparser.add_argument("job_order", nargs="?", help="Job input json file")
362+
namemap["job_order"] = "job_order"
363+
364+
for inp in tool.tool["inputs"]:
365+
name = shortname(inp["id"])
366+
namemap[name.replace("-", "_")] = name
367+
inptype = inp["type"]
368+
description = inp.get("description", "")
369+
default = inp.get("default", None)
370+
add_argument(toolparser, name, inptype, description, default)
371+
368372
return toolparser
369373

370374

0 commit comments

Comments
 (0)