@@ -293,22 +293,14 @@ class FileAppendAction(FSAppendAction):
293
293
class DirectoryAppendAction (FSAppendAction ):
294
294
objclass = "Directory"
295
295
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"
300
296
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
303
299
if len (name ) == 1 :
304
300
flag = "-"
305
301
else :
306
302
flag = "--"
307
303
308
- namemap [name .replace ("-" , "_" )] = name
309
-
310
- inptype = inp ["type" ]
311
-
312
304
required = True
313
305
if isinstance (inptype , list ):
314
306
if inptype [0 ] == "null" :
@@ -319,10 +311,9 @@ def generate_parser(toolparser, tool, namemap):
319
311
_logger .debug (u"Can't make command line argument from %s" , inptype )
320
312
return None
321
313
322
- ahelp = inp . get ( " description" , "" ) .replace ("%" , "%%" )
314
+ ahelp = description .replace ("%" , "%%" )
323
315
action = None # type: Union[argparse.Action, Text]
324
316
atype = None # type: Any
325
- default = None # type: Any
326
317
327
318
if inptype == "File" :
328
319
action = cast (argparse .Action , FileAction )
@@ -348,8 +339,7 @@ def generate_parser(toolparser, tool, namemap):
348
339
elif inptype == "boolean" :
349
340
action = "store_true"
350
341
351
- if "default" in inp :
352
- default = inp ["default" ]
342
+ if default :
353
343
required = False
354
344
355
345
if not atype and not action :
@@ -365,6 +355,20 @@ def generate_parser(toolparser, tool, namemap):
365
355
flag + name , required = required , help = ahelp , action = action ,
366
356
default = default , ** typekw )
367
357
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
+
368
372
return toolparser
369
373
370
374
0 commit comments