diff options
author | kotfu <kotfu@kotfu.net> | 2019-07-06 12:51:55 -0600 |
---|---|---|
committer | kotfu <kotfu@kotfu.net> | 2019-07-06 12:51:55 -0600 |
commit | 369f7eb1df01cc46e0212aa131536e99c1fa68ba (patch) | |
tree | 0026f840c81396fa03cba3f647e09d099dcc2b85 /examples/first_app.py | |
parent | 52a670483e2ea010c56debb4c1ad51c9fda05e46 (diff) | |
download | cmd2-git-369f7eb1df01cc46e0212aa131536e99c1fa68ba.tar.gz |
Work on Getting Started section of documentation
- change the walk through from example.py to a new first_app.py (based on example.py)
- remove the feature tour section, we’ll use the first application to demo the key features
Diffstat (limited to 'examples/first_app.py')
-rwxr-xr-x | examples/first_app.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/first_app.py b/examples/first_app.py new file mode 100755 index 00000000..4c2d977c --- /dev/null +++ b/examples/first_app.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# coding=utf-8 +""" +A simple application using cmd2 which demonstrates 8 key features: + + * Settings + * Commands + * Argument Parsing + * Generating Output + * Help + * Shortcuts + * Multiline Commands + * History +""" +import argparse +import random + +import cmd2 + + +class FirstApp(cmd2.Cmd): + """A simple cmd2 application.""" + + def __init__(self): + shortcuts = cmd2.DEFAULT_SHORTCUTS + shortcuts.update({'&': 'speak'}) + super().__init__(multiline_commands=['orate'], shortcuts=shortcuts) + + # Make maxrepeats settable at runtime + self.maxrepeats = 3 + self.settable['maxrepeats'] = 'max repetitions for speak command' + + speak_parser = argparse.ArgumentParser() + speak_parser.add_argument('-p', '--piglatin', action='store_true', help='atinLay') + speak_parser.add_argument('-s', '--shout', action='store_true', help='N00B EMULATION MODE') + speak_parser.add_argument('-r', '--repeat', type=int, help='output [n] times') + speak_parser.add_argument('words', nargs='+', help='words to say') + + @cmd2.with_argparser(speak_parser) + def do_speak(self, args): + """Repeats what you tell me to.""" + words = [] + for word in args.words: + if args.piglatin: + word = '%s%say' % (word[1:], word[0]) + if args.shout: + word = word.upper() + words.append(word) + repetitions = args.repeat or 1 + for _ in range(min(repetitions, self.maxrepeats)): + # .poutput handles newlines, and accommodates output redirection too + self.poutput(' '.join(words)) + + # orate is a synonym for speak which takes multiline input + do_orate = do_speak + + +if __name__ == '__main__': + import sys + c = FirstApp() + sys.exit(c.cmdloop()) |