aboutsummaryrefslogtreecommitdiff
path: root/scripts/shush
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/shush')
-rwxr-xr-xscripts/shush64
1 files changed, 64 insertions, 0 deletions
diff --git a/scripts/shush b/scripts/shush
new file mode 100755
index 000000000000..a2dd6c8c58d0
--- /dev/null
+++ b/scripts/shush
@@ -0,0 +1,64 @@
+#!/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()