summaryrefslogtreecommitdiffstats
path: root/gitautodeploy/wrappers/process.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitautodeploy/wrappers/process.py')
-rw-r--r--gitautodeploy/wrappers/process.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/gitautodeploy/wrappers/process.py b/gitautodeploy/wrappers/process.py
new file mode 100644
index 0000000..30adc36
--- /dev/null
+++ b/gitautodeploy/wrappers/process.py
@@ -0,0 +1,31 @@
+class ProcessWrapper():
+ """Wraps the subprocess popen method and provides logging."""
+
+ def __init__(self):
+ pass
+
+ @staticmethod
+ def call(*popenargs, **kwargs):
+ """Run command with arguments. Wait for command to complete. Sends
+ output to logging module. The arguments are the same as for the Popen
+ constructor."""
+
+ from subprocess import Popen, PIPE
+ import logging
+ logger = logging.getLogger()
+
+ kwargs['stdout'] = PIPE
+ kwargs['stderr'] = PIPE
+
+ p = Popen(*popenargs, **kwargs)
+ stdout, stderr = p.communicate()
+
+ if stdout:
+ for line in stdout.strip().split("\n"):
+ logger.info(line)
+
+ if stderr:
+ for line in stderr.strip().split("\n"):
+ logger.error(line)
+
+ return p.returncode \ No newline at end of file