annotate docs/freefeatures.rst @ 328:7b2bca3951a7

locals_in_py
author cat@eee
date Fri, 12 Feb 2010 15:35:48 -0500
parents 4172feeddf76
children c69ad8418d39
rev   line source
314
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
1 ===================================
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
2 Features requiring no modifications
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
3 ===================================
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
4
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
5 These features are provided "for free" to a cmd_-based application
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
6 simply by replacing ``import cmd`` with ``import cmd2 as cmd``.
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
7
315
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
8 Script files
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
9 ============
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
10
325
4172feeddf76 want to incorporate run() for tests - not yet working
catherine@dellzilla
parents: 324
diff changeset
11 Commands can be loaded and run from text files.
315
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
12
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
13 .. automethod:: cmd2.Cmd.do_load
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
14
325
4172feeddf76 want to incorporate run() for tests - not yet working
catherine@dellzilla
parents: 324
diff changeset
15 .. automethod:: cmd2.Cmd.do_save
4172feeddf76 want to incorporate run() for tests - not yet working
catherine@dellzilla
parents: 324
diff changeset
16
315
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
17 Output redirection
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
18 ==================
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
19
324
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
20 As in a Unix shell, output of a command can be redirected:
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
21
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
22 - sent to a file with ``>``, as in ``mycommand args > filename.txt``
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
23 - piped (``|``) as input to operating-system commands, as in
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
24 ``mycommand args | wc``
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
25 - sent to the paste buffer, ready for the next Copy operation, by
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
26 ending with a bare ``>``, as in ``mycommand args >``.. Redirecting
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
27 to paste buffer requires software to be installed on the operating
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
28 system, pywin32_ on Windows or xclip_ on *nix.
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
29
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
30 .. _pywin32:: http://sourceforge.net/projects/pywin32/
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
31 .. _xclip:: http://www.cyberciti.biz/faq/xclip-linux-insert-files-command-output-intoclipboard/
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
32
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
33
325
4172feeddf76 want to incorporate run() for tests - not yet working
catherine@dellzilla
parents: 324
diff changeset
34 Commands at invocation
4172feeddf76 want to incorporate run() for tests - not yet working
catherine@dellzilla
parents: 324
diff changeset
35 ======================
324
21584174d865 make SHOW TABLES work
catherine@dellzilla
parents: 315
diff changeset
36
328
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
37 You can send commands to your app as you invoke it by
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
38 including them as extra arguments to the program.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
39 ``cmd2`` interprets each argument as a separate
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
40 command, so you should enclose each command in
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
41 quotation marks if it is more than a one-word command.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
42
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
43 ::
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
44
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
45 cat@eee:~/proj/cmd2/example$ python example.py "say hello" "say Gracie" quit
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
46 hello
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
47 Gracie
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
48 cat@eee:~/proj/cmd2/example$
315
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
49
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
50 Python
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
51 ======
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
52
328
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
53 ::
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
54
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
55 The ``py`` command will run its arguments as a Python
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
56 command. Entered without arguments, it enters an
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
57 interactive Python session. That session can call
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
58 "back" to your application with ``cmd("")``. Through
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
59 ``self``, it also has access to your application
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
60 instance itself. (If that thought terrifies you,
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
61 you can set the ``locals_in_py`` parameter to ``False``.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
62 See see :ref:`parameters`)
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
63
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
64 ::
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
65
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
66 (Cmd) py print("-".join("spelling"))
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
67 s-p-e-l-l-i-n-g
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
68 (Cmd) py
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
69 Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15)
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
70 [GCC 4.4.1] on linux2
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
71 Type "help", "copyright", "credits" or "license" for more information.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
72 (CmdLineApp)
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
73
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
74 py <command>: Executes a Python command.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
75 py: Enters interactive Python mode.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
76 End with `Ctrl-D` (Unix) / `Ctrl-Z` (Windows), `quit()`, 'exit()`.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
77 Non-python commands can be issued with `cmd("your command")`.
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
78
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
79 >>> import os
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
80 >>> os.uname()
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
81 ('Linux', 'eee', '2.6.31-19-generic', '#56-Ubuntu SMP Thu Jan 28 01:26:53 UTC 2010', 'i686')
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
82 >>> cmd("say --piglatin {os}".format(os=os.uname()[0]))
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
83 inuxLay
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
84 >>> self.prompt
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
85 '(Cmd) '
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
86 >>> self.prompt = 'Python was here > '
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
87 >>> quit()
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
88 Python was here >
7b2bca3951a7 locals_in_py
cat@eee
parents: 325
diff changeset
89
314
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
90 Searchable command history
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
91 ==========================
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
92
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
93 All cmd_-based applications have access to previous commands with
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
94 the up- and down- cursor keys.
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
95
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
96 All cmd_-based applications on systems with the ``readline`` module
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
97 also provide `bash-like history list editing`_.
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
98
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
99 .. _`bash-like history list editing`: http://www.talug.org/events/20030709/cmdline_history.html
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
100
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
101 ``cmd2`` makes a third type of history access available, consisting of these commands:
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
102
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
103 .. automethod:: cmd2.Cmd.do_history
0687bb650118 begin new docs
catherine@dellzilla
parents:
diff changeset
104
315
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
105 Transcript-based testing
a08c50b7d3d3 doc skeleton
cat@eee
parents: 314
diff changeset
106 ========================