diff options
author | catherine <catherine@dellzilla> | 2010-02-17 12:08:42 -0500 |
---|---|---|
committer | catherine <catherine@dellzilla> | 2010-02-17 12:08:42 -0500 |
commit | c7d04209407c885a26eb317e18402b77b301444a (patch) | |
tree | f324026d127bacb3e799a1054ff6d333fc2b76e7 | |
parent | d82a0c3c127200bc787abe3f561f1a9d3238dac3 (diff) | |
download | cmd2-hg-c7d04209407c885a26eb317e18402b77b301444a.tar.gz |
redirect works even with print
-rwxr-xr-x | cmd2.py | 18 | ||||
-rw-r--r-- | docs/pycon2010/pirate6.py | 2 |
2 files changed, 11 insertions, 9 deletions
@@ -183,7 +183,7 @@ if subprocess.mswindows: except ImportError: def get_paste_buffer(*args): raise OSError, pastebufferr % ('pywin32', 'Download from http://sourceforge.net/projects/pywin32/') - setPasteBuffer = get_paste_buffer + write_to_paste_buffer = get_paste_buffer else: can_clip = False try: @@ -214,8 +214,7 @@ else: else: def get_paste_buffer(*args): raise OSError, pastebufferr % ('xclip', 'On Debian/Ubuntu, install with "sudo apt-get install xclip"') - setPasteBuffer = get_paste_buffer - writeToPasteBuffer = get_paste_buffer + write_to_paste_buffer = get_paste_buffer pyparsing.ParserElement.setDefaultWhitespaceChars(' \t') @@ -787,18 +786,20 @@ class Cmd(cmd.Cmd): def redirect_output(self, statement): if statement.parsed.pipeTo: - self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_sys = Statekeeper(sys, ('stdout',)) self.redirect = subprocess.Popen(statement.parsed.pipeTo, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) - self.stdout = self.redirect.stdin + sys.stdout = self.stdout = self.redirect.stdin elif statement.parsed.output: self.kept_state = Statekeeper(self, ('stdout',)) + self.kept_sys = Statekeeper(sys, ('stdout',)) if statement.parsed.outputTo: mode = 'w' if statement.parsed.output == '>>': mode = 'a' - self.stdout = open(os.path.expanduser(statement.parsed.outputTo), mode) + sys.stdout = self.stdout = open(os.path.expanduser(statement.parsed.outputTo), mode) else: - self.stdout = tempfile.TemporaryFile() + sys.stdout = self.stdout = tempfile.TemporaryFile() if statement.parsed.output == '>>': self.stdout.write(get_paste_buffer()) @@ -812,7 +813,8 @@ class Cmd(cmd.Cmd): for result in self.redirect.communicate(): self.kept_state.stdout.write(result or '') self.stdout.close() - self.kept_state.restore() + self.kept_state.restore() + self.kept_sys.restore() self.kept_state = None def onecmd(self, line): diff --git a/docs/pycon2010/pirate6.py b/docs/pycon2010/pirate6.py index e16727d..3f4ee17 100644 --- a/docs/pycon2010/pirate6.py +++ b/docs/pycon2010/pirate6.py @@ -1,4 +1,4 @@ -from cmd import Cmd +from cmd2 import Cmd # prompts and defaults class Pirate(Cmd): |