summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
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())