| #!/usr/bin/env python | 
 |  | 
 | import sys | 
 | import subprocess | 
 | import tempfile | 
 | import time | 
 | import os | 
 |  | 
 | class Printer(object): | 
 |     def __init__(self): | 
 |         pass | 
 |      | 
 |     @classmethod | 
 |     def write(self, message): | 
 |         sys.stdout.write("%s\n" % message) | 
 |         sys.stdout.flush() | 
 |  | 
 | def command(): | 
 |     return ' '.join(sys.argv[1:]) | 
 |  | 
 | def tmpfile(suffix=None): | 
 |     if suffix is None: suffix = "" | 
 |     return tempfile.NamedTemporaryFile(prefix='shush', suffix=suffix, delete=False) | 
 |  | 
 | def launch(cmd="/bin/ls", sin=None, sout=None): | 
 |     class Process(object): | 
 |         def __init__(self, p, i, o): | 
 |             self.p = p | 
 |             self.stdin = i | 
 |             self.stdout = o | 
 |          | 
 |         def poll(self): | 
 |             self.returncode = self.p.poll() | 
 |             return self.returncode | 
 |  | 
 |     return Process(subprocess.Popen(cmd, shell=True, stdin=sin, stdout=sout, stderr=subprocess.STDOUT), sin, sout) | 
 |  | 
 | def wait(p): | 
 |     while p.poll() is None: | 
 |         time.sleep(5) | 
 |         Printer.write("still running @ %s..." % time.strftime("%Y%m%d%H%M%S")) # fool Xcode into thinking that I am doing something... | 
 |     return p | 
 |  | 
 | def exit(p): | 
 |     code = p.returncode | 
 |     if code != 0: | 
 |         Printer.write("error: sucks to be you") | 
 |         Printer.write("error: shushed process failed - go check %s for details" % (p.stdout.name)) | 
 |     else: | 
 |         Printer.write("shush: success - output is going away") | 
 |         try: | 
 |             os.remove(p.stdout.name) | 
 |         finally: | 
 |             pass | 
 |     sys.exit(code) | 
 |  | 
 | def main(): | 
 |     out = tmpfile() | 
 |     cmd = command() | 
 |     Printer.write("shush: launching '%s' - std{out|err}=%s" % (cmd, out.name)) | 
 |     p = wait(launch(cmd=cmd, sout=out)) | 
 |     exit(p) | 
 |  | 
 | main() |