diff options
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 |