def run(self): self.started = time.time() tid = gs.begin(DOMAIN, self.message, set_status=False, cancel=self.cancel) try: try: self.p = gs.popen(self.cmd, shell=self.shell, stderr=subprocess.STDOUT, environ=self.env, cwd=self.cwd, bufsize=1) CommandStdoutReader(self, self.p.stdout).start() except Exception as ex: self.x = ex finally: self.rcode = self.p.wait() if self.p else False finally: gs.end(tid) self.ended = time.time() self.on_done(self) for f in self.done: try: f(self) except Exception: gs.notice(DOMAIN, gs.traceback())
def run(cmd=[], shell=False, env={}, cwd=None, input=None): out = u"" err = u"" exc = None try: env = fix_env(env) shell, cmd = fix_shell_cmd(shell, cmd) p = gs.popen(cmd, shell=shell, stderr=subprocess.STDOUT, environ=env, cwd=cwd) if input is not None: input = gs.astr(input) out, _ = p.communicate(input=input) out = gs.ustr(out) if out else u'' except Exception as ex: err = u'Error while running %s: %s' % (cmd, gs.traceback()) exc = ex return (out, err, exc)