| #!/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() |