ยปCore Development>Code coverage>Lib/plat-mac/terminalcommand.py

Python code coverage for Lib/plat-mac/terminalcommand.py

#countcontent
1n/a"""terminalcommand.py -- A minimal interface to Terminal.app.
2n/a
3n/aTo run a shell command in a new Terminal.app window:
4n/a
5n/a import terminalcommand
6n/a terminalcommand.run("ls -l")
7n/a
8n/aNo result is returned; it is purely meant as a quick way to run a script
9n/awith a decent input/output window.
10n/a"""
11n/a
12n/a#
13n/a# This module is a fairly straightforward translation of Jack Jansen's
14n/a# Mac/OSX/PythonLauncher/doscript.m.
15n/a#
16n/a
17n/afrom warnings import warnpy3k
18n/awarnpy3k("In 3.x, the terminalcommand module is removed.", stacklevel=2)
19n/a
20n/aimport time
21n/aimport os
22n/afrom Carbon import AE
23n/afrom Carbon.AppleEvents import *
24n/a
25n/a
26n/aTERMINAL_SIG = "trmx"
27n/aSTART_TERMINAL = "/usr/bin/open /Applications/Utilities/Terminal.app"
28n/aSEND_MODE = kAENoReply # kAEWaitReply hangs when run from Terminal.app itself
29n/a
30n/a
31n/adef run(command):
32n/a """Run a shell command in a new Terminal.app window."""
33n/a termAddress = AE.AECreateDesc(typeApplicationBundleID, "com.apple.Terminal")
34n/a theEvent = AE.AECreateAppleEvent(kAECoreSuite, kAEDoScript, termAddress,
35n/a kAutoGenerateReturnID, kAnyTransactionID)
36n/a commandDesc = AE.AECreateDesc(typeChar, command)
37n/a theEvent.AEPutParamDesc(kAECommandClass, commandDesc)
38n/a
39n/a try:
40n/a theEvent.AESend(SEND_MODE, kAENormalPriority, kAEDefaultTimeout)
41n/a except AE.Error, why:
42n/a if why[0] != -600: # Terminal.app not yet running
43n/a raise
44n/a os.system(START_TERMINAL)
45n/a time.sleep(1)
46n/a theEvent.AESend(SEND_MODE, kAENormalPriority, kAEDefaultTimeout)
47n/a
48n/a
49n/aif __name__ == "__main__":
50n/a run("ls -l")