summaryrefslogtreecommitdiff
path: root/examples/subcommands.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/subcommands.py')
-rwxr-xr-xexamples/subcommands.py22
1 files changed, 10 insertions, 12 deletions
diff --git a/examples/subcommands.py b/examples/subcommands.py
index 031b17b2..75c0733e 100755
--- a/examples/subcommands.py
+++ b/examples/subcommands.py
@@ -35,12 +35,6 @@ class SubcommandsExample(cmd2.Cmd):
"""sport subcommand of base command"""
self.poutput('Sport is {}'.format(args.sport))
- # noinspection PyUnusedLocal
- def complete_base_sport(self, text, line, begidx, endidx):
- """ Adds tab completion to base sport subcommand """
- index_dict = {1: sport_item_strs}
- return self.index_based_complete(text, line, begidx, endidx, index_dict)
-
# create the top-level parser for the base command
base_parser = argparse.ArgumentParser(prog='base')
base_subparsers = base_parser.add_subparsers(title='subcommands', help='subcommand help')
@@ -53,15 +47,22 @@ class SubcommandsExample(cmd2.Cmd):
# create the parser for the "bar" subcommand
parser_bar = base_subparsers.add_parser('bar', help='bar help')
- parser_bar.add_argument('z', help='string')
parser_bar.set_defaults(func=base_bar)
+ bar_subparsers = parser_bar.add_subparsers(title='layer3', help='help for 3rd layer of commands')
+ parser_bar.add_argument('z', help='string')
+
+ bar_subparsers.add_parser('apple', help='apple help')
+ bar_subparsers.add_parser('artichoke', help='artichoke help')
+ bar_subparsers.add_parser('cranberries', help='cranberries help')
+
# create the parser for the "sport" subcommand
parser_sport = base_subparsers.add_parser('sport', help='sport help')
- parser_sport.add_argument('sport', help='Enter name of a sport')
+ sport_arg = parser_sport.add_argument('sport', help='Enter name of a sport')
+ setattr(sport_arg, 'arg_choices', sport_item_strs)
# Set both a function and tab completer for the "sport" subcommand
- parser_sport.set_defaults(func=base_sport, completer=complete_base_sport)
+ parser_sport.set_defaults(func=base_sport)
@with_argparser(base_parser)
def do_base(self, args):
@@ -74,9 +75,6 @@ class SubcommandsExample(cmd2.Cmd):
# No subcommand was provided, so call help
self.do_help('base')
- # Enable tab completion of base to make sure the subcommands' completers get called.
- complete_base = cmd2.Cmd.cmd_with_subs_completer
-
if __name__ == '__main__':
app = SubcommandsExample()