diff options
author | Anthon van der Neut <anthon@mnt.org> | 2014-12-14 13:23:49 +0100 |
---|---|---|
committer | Anthon van der Neut <anthon@mnt.org> | 2014-12-14 13:23:49 +0100 |
commit | a5eee31aeb8483ebc7ee01bd5ff000acb0d8afd1 (patch) | |
tree | 02de0d498c0491a1ac48d2743be5864077b6bb99 /__init__.py | |
parent | 6323274a0d681ef3473c872b232af1c557f3618f (diff) | |
download | ruamel.std.argparse-a5eee31aeb8483ebc7ee01bd5ff000acb0d8afd1.tar.gz |
--help-all added
Diffstat (limited to '__init__.py')
-rw-r--r-- | __init__.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/__init__.py b/__init__.py index 0ff9c30..9a7ce66 100644 --- a/__init__.py +++ b/__init__.py @@ -33,7 +33,7 @@ def _convert_version(tup): # < -version_info = (0, 3, 2) +version_info = (0, 4) __version__ = _convert_version(version_info) del _convert_version @@ -209,7 +209,13 @@ class ProgramBase(object): else: # add long option based on function name arg.insert(0, '--' + fun_name) - parser.add_argument(*arg, **o['kw']) + + try: + parser.add_argument(*arg, **o['kw']) + except ValueError: + print('argparse.ProgramBase arg:', repr(arg)) + print('argparse.ProgramBase kw:', o['kw']) + raise return ssp def dump(method_name_list, level=0): @@ -357,6 +363,20 @@ class ProgramBase(object): name = kw.pop('default_sub_parser', None) if name is not None: self._parser.set_default_subparser(name, args=kw.get('args')) + if kw.pop('help_all', None): + tmp_args = args if args else sys.argv[1:] + if '--help-all' in tmp_args: + try: + self._parser.parse_args(['--help']) + except SystemExit: + pass + for sc in self._methods_with_sub_parsers: + print('-' * 72) + try: + self._parser.parse_args([sc, '--help']) + except SystemExit: + pass + sys.exit(0) self._args = self._parser.parse_args(*args, **kw) return self._args |