mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 12:28:09 +01:00
nmbug: Add a 'help' command for folks who don't like --help
The 'if args.func == help' block at the end avoids: AttributeError: 'functools.partial' object has no attribute '__code__'
This commit is contained in:
parent
62bc1d4717
commit
9d25c97d8b
1 changed files with 30 additions and 1 deletions
|
@ -32,6 +32,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
import codecs as _codecs
|
import codecs as _codecs
|
||||||
import collections as _collections
|
import collections as _collections
|
||||||
|
import functools as _functools
|
||||||
import inspect as _inspect
|
import inspect as _inspect
|
||||||
import locale as _locale
|
import locale as _locale
|
||||||
import logging as _logging
|
import logging as _logging
|
||||||
|
@ -677,6 +678,24 @@ def _unpack_diff_lines(stream):
|
||||||
yield (id, tag)
|
yield (id, tag)
|
||||||
|
|
||||||
|
|
||||||
|
def _help(parser, command=None):
|
||||||
|
"""
|
||||||
|
Show help for an nmbug command.
|
||||||
|
|
||||||
|
Because some folks prefer:
|
||||||
|
|
||||||
|
$ nmbug help COMMAND
|
||||||
|
|
||||||
|
to
|
||||||
|
|
||||||
|
$ nmbug COMMAND --help
|
||||||
|
"""
|
||||||
|
if command:
|
||||||
|
parser.parse_args([command, '--help'])
|
||||||
|
else:
|
||||||
|
parser.parse_args(['--help'])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
|
@ -692,6 +711,8 @@ if __name__ == '__main__':
|
||||||
help='Log verbosity. Defaults to {!r}.'.format(
|
help='Log verbosity. Defaults to {!r}.'.format(
|
||||||
_logging.getLevelName(_LOG.level).lower()))
|
_logging.getLevelName(_LOG.level).lower()))
|
||||||
|
|
||||||
|
help = _functools.partial(_help, parser=parser)
|
||||||
|
help.__doc__ = _help.__doc__
|
||||||
subparsers = parser.add_subparsers(
|
subparsers = parser.add_subparsers(
|
||||||
title='commands',
|
title='commands',
|
||||||
description=(
|
description=(
|
||||||
|
@ -703,6 +724,7 @@ if __name__ == '__main__':
|
||||||
'clone',
|
'clone',
|
||||||
'commit',
|
'commit',
|
||||||
'fetch',
|
'fetch',
|
||||||
|
'help',
|
||||||
'log',
|
'log',
|
||||||
'merge',
|
'merge',
|
||||||
'pull',
|
'pull',
|
||||||
|
@ -746,6 +768,10 @@ if __name__ == '__main__':
|
||||||
'Override the default configured in branch.<name>.remote '
|
'Override the default configured in branch.<name>.remote '
|
||||||
'to fetch from a particular remote repository (e.g. '
|
'to fetch from a particular remote repository (e.g. '
|
||||||
"'origin')."))
|
"'origin')."))
|
||||||
|
elif command == 'help':
|
||||||
|
subparser.add_argument(
|
||||||
|
'command', metavar='COMMAND', nargs='?',
|
||||||
|
help='The command to show help for.')
|
||||||
elif command == 'log':
|
elif command == 'log':
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'args', metavar='ARG', nargs='*',
|
'args', metavar='ARG', nargs='*',
|
||||||
|
@ -796,7 +822,10 @@ if __name__ == '__main__':
|
||||||
parser.print_usage()
|
parser.print_usage()
|
||||||
_sys.exit(1)
|
_sys.exit(1)
|
||||||
|
|
||||||
(arg_names, varargs, varkw) = _inspect.getargs(args.func.__code__)
|
if args.func == help:
|
||||||
|
arg_names = ['command']
|
||||||
|
else:
|
||||||
|
(arg_names, varargs, varkw) = _inspect.getargs(args.func.__code__)
|
||||||
kwargs = {key: getattr(args, key) for key in arg_names if key in args}
|
kwargs = {key: getattr(args, key) for key in arg_names if key in args}
|
||||||
try:
|
try:
|
||||||
args.func(**kwargs)
|
args.func(**kwargs)
|
||||||
|
|
Loading…
Reference in a new issue