File: shush

package info (click to toggle)
llvm-toolchain-7 1%3A7.0.1-8
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 733,456 kB
  • sloc: cpp: 3,776,651; ansic: 633,271; asm: 350,301; python: 142,716; objc: 107,612; sh: 22,626; lisp: 11,056; perl: 7,999; pascal: 6,742; ml: 5,537; awk: 3,536; makefile: 2,557; cs: 2,027; xml: 841; ruby: 156
file content (64 lines) | stat: -rwxr-xr-x 1,671 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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()