mirror of
https://github.com/servo/servo.git
synced 2025-06-29 03:23:41 +01:00
Auto merge of #7838 - mbrubeck:mach-up, r=mbrubeck
Upgrade to latest mach from mozilla-central r? @jgraham <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7838) <!-- Reviewable:end -->
This commit is contained in:
commit
e40dd3843f
2 changed files with 25 additions and 6 deletions
|
@ -92,7 +92,6 @@ class CommandAction(argparse.Action):
|
|||
elif values:
|
||||
command = values[0].lower()
|
||||
args = values[1:]
|
||||
|
||||
if command == 'help':
|
||||
if args and args[0] not in ['-h', '--help']:
|
||||
# Make sure args[0] is indeed a command.
|
||||
|
@ -102,8 +101,17 @@ class CommandAction(argparse.Action):
|
|||
sys.exit(0)
|
||||
elif '-h' in args or '--help' in args:
|
||||
# -h or --help is in the command arguments.
|
||||
if '--' in args:
|
||||
# -- is in command arguments
|
||||
if '-h' in args[:args.index('--')] or '--help' in args[:args.index('--')]:
|
||||
# Honor -h or --help only if it appears before --
|
||||
self._handle_command_help(parser, command)
|
||||
sys.exit(0)
|
||||
else:
|
||||
self._handle_command_help(parser, command)
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
else:
|
||||
raise NoCommandError()
|
||||
|
||||
|
@ -172,14 +180,20 @@ class CommandAction(argparse.Action):
|
|||
'usage': usage,
|
||||
}
|
||||
|
||||
remainder = None
|
||||
|
||||
if handler.parser:
|
||||
subparser = handler.parser
|
||||
subparser.context = self._context
|
||||
for arg in subparser._actions[:]:
|
||||
if arg.nargs == argparse.REMAINDER:
|
||||
subparser._actions.remove(arg)
|
||||
remainder = (arg.dest,), {'default': arg.default,
|
||||
'nargs': arg.nargs,
|
||||
'help': arg.help}
|
||||
else:
|
||||
subparser = argparse.ArgumentParser(**parser_args)
|
||||
|
||||
remainder = None
|
||||
|
||||
for arg in handler.arguments:
|
||||
# Remove our group keyword; it's not needed here.
|
||||
group_name = arg[1].get('group')
|
||||
|
@ -230,7 +244,7 @@ class CommandAction(argparse.Action):
|
|||
setattr(command_namespace, name, extra)
|
||||
else:
|
||||
setattr(command_namespace, name, options.get('default', []))
|
||||
elif extra:
|
||||
elif extra and handler.cls.__name__ != 'DeprecatedCommands':
|
||||
raise UnrecognizedArgumentError(command, extra)
|
||||
|
||||
def _handle_main_help(self, parser, verbose):
|
||||
|
|
|
@ -61,6 +61,11 @@ class MachRegistrar(object):
|
|||
if handler.pass_context and not context:
|
||||
raise Exception('mach command class requires context.')
|
||||
|
||||
if context:
|
||||
prerun = getattr(context, 'pre_dispatch_handler', None)
|
||||
if prerun:
|
||||
prerun(context, handler, args=kwargs)
|
||||
|
||||
if handler.pass_context:
|
||||
instance = cls(context)
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue