297 def parse(legacy_args=False):
298 """parses command line arguments and returns an ``Options`` instance"""
304 dashpos = sys.argv.index(
"-")
309 args = sys.argv[1:dashpos]
310 user_opts = sys.argv[dashpos+1:]
320 doHelp = any(a
in (
'-h',
'--help')
or a.startswith(
'--help=')
for a
in args)
323 unrequiredActions = []
324 for a
in parser._actions:
326 unrequiredActions.append(a)
330 helpActions = {
'-h' : parser._option_string_actions.pop(
'-h'),
331 '--help' : parser._option_string_actions.pop(
'--help')}
334 opts, leftover = parser.parse_known_args(args)
337 parser._option_string_actions.update(helpActions)
338 for a
in unrequiredActions:
343 opts, leftover = parser.parse_known_args(args)
345 opts, leftover = parser.parse_known_args(args)
347 opts.user_opts = user_opts
351 if not (opts.scripts
or opts.fromdb)
and leftover:
352 JobOptAction([],
'scripts')(parser, opts, leftover)
354 if not (opts.scripts
or opts.fromdb)
and not opts.interactive:
355 parser.error(
"the following arguments are required: scripts")