Source code for xonsh.api.subprocess
"""Xonsh extension of the standard library subprocess module, using xonsh for
subprocess calls"""
from xonsh.api.os import indir
from xonsh.built_ins import XSH, subproc_captured_hiddenobject, subproc_captured_stdout
[docs]
def run(cmd, cwd=None, check=False):
"""Drop in replacement for ``subprocess.run`` like functionality"""
env = XSH.env
if cwd is None:
with env.swap(XONSH_SUBPROC_CMD_RAISE_ERROR=check):
p = subproc_captured_hiddenobject(cmd)
else:
with indir(cwd), env.swap(XONSH_SUBPROC_CMD_RAISE_ERROR=check):
p = subproc_captured_hiddenobject(cmd)
return p
[docs]
def check_call(cmd, cwd=None):
"""Drop in replacement for ``subprocess.check_call`` like functionality"""
p = run(cmd, cwd=cwd, check=True)
return p.returncode
[docs]
def check_output(cmd, cwd=None):
"""Drop in replacement for ``subprocess.check_output`` like functionality"""
env = XSH.env
if cwd is None:
with env.swap(XONSH_SUBPROC_CMD_RAISE_ERROR=True):
output = subproc_captured_stdout(cmd)
else:
with indir(cwd), env.swap(XONSH_SUBPROC_CMD_RAISE_ERROR=True):
output = subproc_captured_stdout(cmd)
return output.encode("utf-8")