summaryrefslogtreecommitdiff
path: root/__init__.py
diff options
context:
space:
mode:
authorAnthon van der Neut <anthon@mnt.org>2014-12-14 13:23:49 +0100
committerAnthon van der Neut <anthon@mnt.org>2014-12-14 13:23:49 +0100
commita5eee31aeb8483ebc7ee01bd5ff000acb0d8afd1 (patch)
tree02de0d498c0491a1ac48d2743be5864077b6bb99 /__init__.py
parent6323274a0d681ef3473c872b232af1c557f3618f (diff)
downloadruamel.std.argparse-a5eee31aeb8483ebc7ee01bd5ff000acb0d8afd1.tar.gz
--help-all added
Diffstat (limited to '__init__.py')
-rw-r--r--__init__.py24
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