llvm-capstone/lldb/scripts/shush
Enrico Granata 8bfb5544cf Several improvements to the shush script
llvm-svn: 226343
2015-01-16 23:16:22 +00:00

65 lines
1.6 KiB
Python
Executable File

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