summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorkotfu <kotfu@kotfu.net>2019-07-06 12:51:55 -0600
committerkotfu <kotfu@kotfu.net>2019-07-06 12:51:55 -0600
commit369f7eb1df01cc46e0212aa131536e99c1fa68ba (patch)
tree0026f840c81396fa03cba3f647e09d099dcc2b85 /examples
parent52a670483e2ea010c56debb4c1ad51c9fda05e46 (diff)
downloadcmd2-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')
-rwxr-xr-xexamples/first_app.py61
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())