diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2020-03-01 11:17:29 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2020-03-01 11:24:09 +0300 |
commit | 0352e233955bc5d04344a4ae3ef04436d8299ae1 (patch) | |
tree | 7b99b9bbf7b6390cbea22966ba257dfd09f1fea9 /cgit/repos/utils.py | |
parent | Travis: lint the config (diff) | |
download | cgitize-0352e233955bc5d04344a4ae3ef04436d8299ae1.tar.gz cgitize-0352e233955bc5d04344a4ae3ef04436d8299ae1.zip |
rename the modules
Diffstat (limited to 'cgit/repos/utils.py')
-rw-r--r-- | cgit/repos/utils.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/cgit/repos/utils.py b/cgit/repos/utils.py new file mode 100644 index 0000000..84337e8 --- /dev/null +++ b/cgit/repos/utils.py @@ -0,0 +1,43 @@ +# Copyright (c) 2018 Egor Tensin <Egor.Tensin@gmail.com> +# This file is part of the "cgit repos" project. +# For details, see https://github.com/egor-tensin/cgit-repos. +# Distributed under the MIT License. + +import contextlib +import logging +import os +import subprocess + + +def check_output(*args, stdout=subprocess.PIPE, **kwargs): + try: + result = subprocess.run(args, stdout=stdout, stderr=subprocess.STDOUT, + encoding='utf-8', check=True, **kwargs) + 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) |