From 40413151c875e779fed31692245016aa1edb4e4a Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Sun, 15 Sep 2019 15:10:13 -0700 Subject: [PATCH] Added run_program() --- scripts/wk/std.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/scripts/wk/std.py b/scripts/wk/std.py index 4fa73fd8..6af49274 100644 --- a/scripts/wk/std.py +++ b/scripts/wk/std.py @@ -1,4 +1,5 @@ '''WizardKit: Standard Functions''' +# pylint: disable=too-many-lines # vim: sts=2 sw=2 ts=2 import itertools @@ -874,6 +875,31 @@ def print_warning(msg, **kwargs): print_colored([msg], ['YELLOW'], **kwargs) +def run_program(cmd, check=True, pipe=True, shell=False, **kwargs): + """Run program and return a subprocess.CompletedProcess object.""" + cmd_kwargs = { + 'args': cmd, + 'check': check, + 'shell': shell, + } + + # Add additional kwargs if applicable + for key in ('cwd', 'encoding', 'errors', 'stderr', 'stdout'): + if key in kwargs: + cmd_kwargs[key] = kwargs[key] + + # Finalize cmd_kwargs + if pipe: + cmd_kwargs['stderr'] = subprocess.PIPE + cmd_kwargs['stdout'] = subprocess.PIPE + if not ('encoding' in cmd_kwargs or 'errors' in cmd_kwargs): + cmd_kwargs['encoding'] = 'utf-8' + cmd_kwargs['errors'] = 'ignore' + + # Ready to run program + return subprocess.run(**cmd_kwargs) + + def set_title(title): """Set window title.""" if os.name == 'nt':