annotate example/example.py @ 258:7a98d7f2da30

I get it - BASH line expansion of file names gets me
author Catherine Devlin <catherine.devlin@gmail.com>
date Thu, 02 Apr 2009 17:22:02 -0400
parents d62bb3dd58a0
children 5147fa4166b0
rev   line source
106
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
1 '''A sample application for cmd2.'''
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
2
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
3 from cmd2 import Cmd, make_option, options, Cmd2TestCase
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
4 import unittest, optparse, sys
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
5
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
6 class CmdLineApp(Cmd):
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
7 multilineCommands = ['orate']
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
8 Cmd.shortcuts.update({'&': 'speak'})
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
9 maxrepeats = 3
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
10 Cmd.settable.append('maxrepeats')
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
11
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
12 @options([make_option('-p', '--piglatin', action="store_true", help="atinLay"),
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
13 make_option('-s', '--shout', action="store_true", help="N00B EMULATION MODE"),
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
14 make_option('-r', '--repeat', type="int", help="output [n] times")
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
15 ])
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
16 def do_speak(self, arg, opts=None):
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
17 """Repeats what you tell me to."""
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
18 arg = ''.join(arg)
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
19 if opts.piglatin:
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
20 arg = '%s%say' % (arg[1:], arg[0])
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
21 if opts.shout:
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
22 arg = arg.upper()
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
23 repetitions = opts.repeat or 1
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
24 for i in range(min(repetitions, self.maxrepeats)):
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
25 self.stdout.write(arg)
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
26 self.stdout.write('\n')
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
27 # self.stdout.write is better than "print", because Cmd can be
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
28 # initialized with a non-standard output destination
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
29
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
30 do_say = do_speak # now "say" is a synonym for "speak"
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
31 do_orate = do_speak # another synonym, but this one takes multi-line input
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
32
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
33 class TestMyAppCase(Cmd2TestCase):
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
34 CmdApp = CmdLineApp
258
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
35 import logging
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
36 logging.basicConfig(level=logging.DEBUG,
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
37 filename='exlog.txt',
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
38 filemode='w')
106
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
39 parser = optparse.OptionParser()
257
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
40 parser.add_option('-t', '--test', dest='test', metavar='FILE',
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
41 help='''Test against transcript(s) in FILE (wildcards OK)''')
106
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
42 (callopts, callargs) = parser.parse_args()
258
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
43 logging.error(callopts)
257
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
44 if callopts.test:
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
45 CmdLineApp.testfile = callopts.test
258
7a98d7f2da30 I get it - BASH line expansion of file names gets me
Catherine Devlin <catherine.devlin@gmail.com>
parents: 257
diff changeset
46 logging.error(CmdLineApp.testfile)
257
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
47 sys.argv = [sys.argv[0]] # the --test argument upsets unittest.main()
106
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
48 unittest.main()
2d3232693807 prompt-setting quirks
catherine@dellzilla
parents:
diff changeset
49 else:
257
d62bb3dd58a0 multiple test files still not quite working, yet works when run through debugger, aaargh
Catherine Devlin <catherine.devlin@gmail.com>
parents: 254
diff changeset
50 CmdLineApp().cmdloop()