Mercurial > python-cmd2
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 | 1 '''A sample application for cmd2.''' |
2 | |
3 from cmd2 import Cmd, make_option, options, Cmd2TestCase | |
4 import unittest, optparse, sys | |
5 | |
6 class CmdLineApp(Cmd): | |
7 multilineCommands = ['orate'] | |
8 Cmd.shortcuts.update({'&': 'speak'}) | |
9 maxrepeats = 3 | |
10 Cmd.settable.append('maxrepeats') | |
11 | |
12 @options([make_option('-p', '--piglatin', action="store_true", help="atinLay"), | |
13 make_option('-s', '--shout', action="store_true", help="N00B EMULATION MODE"), | |
14 make_option('-r', '--repeat', type="int", help="output [n] times") | |
15 ]) | |
16 def do_speak(self, arg, opts=None): | |
17 """Repeats what you tell me to.""" | |
18 arg = ''.join(arg) | |
19 if opts.piglatin: | |
20 arg = '%s%say' % (arg[1:], arg[0]) | |
21 if opts.shout: | |
22 arg = arg.upper() | |
23 repetitions = opts.repeat or 1 | |
24 for i in range(min(repetitions, self.maxrepeats)): | |
25 self.stdout.write(arg) | |
26 self.stdout.write('\n') | |
27 # self.stdout.write is better than "print", because Cmd can be | |
28 # initialized with a non-standard output destination | |
29 | |
30 do_say = do_speak # now "say" is a synonym for "speak" | |
31 do_orate = do_speak # another synonym, but this one takes multi-line input | |
32 | |
33 class TestMyAppCase(Cmd2TestCase): | |
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 | 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 | 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 | 48 unittest.main() |
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() |