Example #1
0
def local(cmd, capture = True, shell = None):
    out_stream = subprocess.PIPE if capture else None
    err_stream = subprocess.PIPE if capture else None

    p = subprocess.Popen(cmd, shell = True, stdout = out_stream,
            stderr = err_stream, executable = shell)

    (stdout, stderr) = p.communicate()

    out = Storage()

    out.stdout = stdout.strip() if stdout else ""
    out.stderr = stderr.strip() if stdout else ""

    out.cmd = cmd

    out.failed = False
    out.return_code = p.returncode

    if p.returncode != 0:
        out.failed = True

    out.succeeded = not out.failed

    return out