Source code for xonsh.lib.subprocess

"""Xonsh extension of the standard library subprocess module, using xonsh for
subprocess calls"""

from xonsh.built_ins import XSH, subproc_captured_hiddenobject, subproc_captured_stdout
from xonsh.lib.os import indir


[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(RAISE_SUBPROC_ERROR=check): p = subproc_captured_hiddenobject(cmd) else: with indir(cwd), env.swap(RAISE_SUBPROC_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(RAISE_SUBPROC_ERROR=True): output = subproc_captured_stdout(cmd) else: with indir(cwd), env.swap(RAISE_SUBPROC_ERROR=True): output = subproc_captured_stdout(cmd) return output.encode("utf-8")