diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-04-23 15:21:58 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-04-23 15:21:58 -0400 |
commit | 65454291845ee0496d747f7d8892df5f16db3921 (patch) | |
tree | 7dd65e622283563ab5e92d6fb46894cc56420cbf /cmd2 | |
parent | dcafd4e6ee7069009c8ea87f69cd8d6f9fe99067 (diff) | |
download | cmd2-git-65454291845ee0496d747f7d8892df5f16db3921.tar.gz |
Updated _set_parser_prog() so future calls to add_parser() will set the correct prog value
This makes dynamically adding subcommands after the CLI starts easier.
Diffstat (limited to 'cmd2')
-rw-r--r-- | cmd2/decorators.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/cmd2/decorators.py b/cmd2/decorators.py index 7d097534..d2fdf9c7 100644 --- a/cmd2/decorators.py +++ b/cmd2/decorators.py @@ -87,7 +87,7 @@ def _set_parser_prog(parser: argparse.ArgumentParser, prog: str): is a command name and not sys.argv[0]. :param parser: the parser being edited - :param prog: value for the current parsers prog attribute + :param prog: new value for the parser's prog attribute """ # Set the prog value for this parser parser.prog = prog @@ -95,6 +95,10 @@ def _set_parser_prog(parser: argparse.ArgumentParser, prog: str): # Set the prog value for the parser's subcommands for action in parser._actions: if isinstance(action, argparse._SubParsersAction): + # Set the _SubParsersAction's _prog_prefix value. That way if its add_parser() method is called later, + # the correct prog value will be set on the parser being added. + action._prog_prefix = parser.prog + # The keys of action.choices are subcommand names as well as subcommand aliases. The aliases point to the # same parser as the actual subcommand. We want to avoid placing an alias into a parser's prog value. # Unfortunately there is nothing about an action.choices entry which tells us it's an alias. In most cases |