forked from heynemann/skink
-
Notifications
You must be signed in to change notification settings - Fork 1
/
executers.py
27 lines (22 loc) · 938 Bytes
/
executers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
from subprocess import Popen, PIPE
class ShellExecuter(object):
def execute(self, command, base_path, change_dir=True):
print ("Executing command: %s" % command)
complement=""
arguments = os.name == "nt" and command.split(" ") or [command]
try:
proc = Popen(command.split(" "), stdout=PIPE, stderr=PIPE, cwd=base_path)
log = "\n".join(proc.communicate())
exit_code = proc.returncode
return ExecuteResult(command, log, exit_code)
except Exception, err:
error_message = "An error occured while executing command %s: %s" % (command, err)
return ExecuteResult(command, error_message, 1)
class ExecuteResult(object):
def __init__(self, command, run_log, exit_code):
self.command = command
self.run_log = run_log
self.exit_code = exit_code