From e113fb7431ebd18c1bc6f7641ceb376df9699dea Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Mon, 12 Aug 2019 01:17:07 +0300 Subject: split pull/pull.py --- pull/utils.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pull/utils.py (limited to 'pull/utils.py') diff --git a/pull/utils.py b/pull/utils.py new file mode 100644 index 0000000..2ce7cbe --- /dev/null +++ b/pull/utils.py @@ -0,0 +1,39 @@ +import contextlib +import logging +import os +import subprocess + + +def check_output(*args, stdout=subprocess.PIPE, **kwargs): + result = subprocess.run(args, stdout=stdout, stderr=subprocess.STDOUT, + encoding='utf-8', **kwargs) + try: + result.check_returncode() + if stdout != subprocess.DEVNULL: + if result.stdout is None: + logging.debug('%s', args) + else: + logging.debug('%s\n%s', args, result.stdout) + return result.returncode == 0, result.stdout + except subprocess.CalledProcessError as e: + if stdout != subprocess.DEVNULL: + logging.error('%s\n%s', e, e.output) + return e.returncode == 0, e.output + + +def run(*args, discard_output=False, **kwargs): + if discard_output: + success, _ = check_output(*args, stdout=subprocess.DEVNULL, **kwargs) + else: + success, _ = check_output(*args, **kwargs) + return success + + +@contextlib.contextmanager +def chdir(new_cwd): + old_cwd = os.getcwd() + os.chdir(new_cwd) + try: + yield + finally: + os.chdir(old_cwd) -- cgit v1.2.3