summaryrefslogtreecommitdiff
path: root/cmd2/cmd2.py
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2020-09-28 16:11:33 -0400
committerKevin Van Brunt <kmvanbrunt@gmail.com>2020-09-28 16:11:33 -0400
commitea2fde52badce494ce73952f73f0743f18c5e890 (patch)
tree03475fd06569c63b3f5f9c97c6e09adc8581731a /cmd2/cmd2.py
parentd348f09cf848a566a43b30e04aa6d3adbc4de8bc (diff)
downloadcmd2-git-ea2fde52badce494ce73952f73f0743f18c5e890.tar.gz
Only setting subcommand handler on attached_parser and not its parent parser
Diffstat (limited to 'cmd2/cmd2.py')
-rw-r--r--cmd2/cmd2.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py
index 6e1a38ca..d1a26a2b 100644
--- a/cmd2/cmd2.py
+++ b/cmd2/cmd2.py
@@ -676,10 +676,6 @@ class Cmd(cmd.Cmd):
raise CommandSetRegistrationError('Could not find argparser for command "{}" needed by subcommand: {}'
.format(command_name, str(method)))
- # Set the subcommand handler function
- defaults = {constants.NS_ATTR_SUBCMD_HANDLER: method}
- subcmd_parser.set_defaults(**defaults)
-
def find_subcommand(action: argparse.ArgumentParser, subcmd_names: List[str]) -> argparse.ArgumentParser:
if not subcmd_names:
return action
@@ -720,6 +716,12 @@ class Cmd(cmd.Cmd):
add_parser_kwargs['add_help'] = False
attached_parser = action.add_parser(subcommand_name, **add_parser_kwargs)
+
+ # Set the subcommand handler
+ defaults = {constants.NS_ATTR_SUBCMD_HANDLER: method}
+ attached_parser.set_defaults(**defaults)
+
+ # Set what instance the handler is bound to
setattr(attached_parser, constants.PARSER_ATTR_COMMANDSET, cmdset)
break