summaryrefslogtreecommitdiffstats
path: root/gd_diff.py
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2016-10-02 13:21:50 +0000
committerrsiddharth <s@ricketyspace.net>2016-10-02 13:29:18 +0000
commit60ae86411fb4727dd29baacb60f1d7d78a1c0942 (patch)
treeb7eec93cf3161d60207c0b75795857ca1a6e8995 /gd_diff.py
parente2e157cfc3286a291e64121bf1422faf85094880 (diff)
Add `execute` function (gd_diff.py).
* gd_diff.py (execute): New function. * tests/test_gd_diff.py (test_execute_success, test_execute_cmderror) (test_execute_raise_exception): Tests for `execute` function.
Diffstat (limited to 'gd_diff.py')
-rw-r--r--gd_diff.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/gd_diff.py b/gd_diff.py
index 97cf175..3c704e9 100644
--- a/gd_diff.py
+++ b/gd_diff.py
@@ -6,8 +6,12 @@
# gns-deb-diff is under the Public Domain. See
# <https://creativecommons.org/publicdomain/zero/1.0>
+import shlex
import sys
+from subprocess import run, PIPE
+
+
# list of recognized fields.
field_list = [
"Change-Type",
@@ -28,6 +32,23 @@ def read_file(fpath):
return f.read()
+def execute(cmd, out=None, err=None):
+ """Run `cmd`. Returns an instance of `subprocess.CompletedProcess`
+
+ `cmd` must be a string containing the command to run.
+ """
+ cmd = shlex.split(cmd)
+
+ try:
+ completed_process = run(cmd, stdout=out, stderr=err)
+ except (FileNotFoundError, OSError, ValueError) as e:
+ print("Error running '%s'\n Error Info:\n %r" % (cmd[0], e),
+ file=sys.stderr)
+ sys.exit(1)
+
+ return completed_process
+
+
def get_packages(pkgs_file):
"""Return an iterator contaning of package names from `pkgs_file`.