buildcmd.py 884 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #! python
  2. from subprocess import call, Popen
  3. from tempfile import TemporaryFile
  4. class BuildCmd:
  5. def __init__(self):
  6. self._result = -1
  7. self._output = TemporaryFile(mode="r+")
  8. def getCommand(self):
  9. raise NotImplementedError
  10. def getArguments(self):
  11. return []
  12. def getOutput(self):
  13. return self._output
  14. def getLog(self):
  15. return None
  16. def isSuccess(self):
  17. return self._output == 0
  18. def run(self):
  19. cmd = [ self.getCommand() ] + self.getArguments()
  20. print "Running: " + ' '.join(cmd)
  21. try:
  22. self._result = call(cmd, stdout = self._output)
  23. except:
  24. print "Fatal error!"
  25. self._output.seek(0)
  26. print self._output.read()
  27. logfile = self.getLog()
  28. if logfile != None:
  29. print logfile.read()
  30. print "Command returned: {0}".format(self._result)
  31. return self._result