def shell(self, *args, **kwargs): exceptions = kwargs.pop('exceptions', False) join = kwargs.pop('join', False) if kwargs: raise Exception('Unsupported kwargs provided to function.') log.debug(' '.join(args)) if join: process = subprocess.Popen(args, cwd=self.path) process.communicate() else: process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.path) stdout, stderr = process.communicate() process.stdout = stdout and force_unicode(stdout.strip()) or u'' process.stderr = stderr and force_unicode(stderr.strip()) or u'' process.split = filter(lambda x: x, map(lambda x: x.strip(), process.stdout.split(u'\n'))) if process.returncode != 0: message = '%s: %s: %s' % (process.returncode, process.stderr, process.stdout) log.debug(message) if exceptions: raise Exception(message) return process
def shell(self, *args, **kwargs): exceptions = kwargs.pop("exceptions", False) join = kwargs.pop("join", False) if kwargs: raise Exception("Unsupported kwargs provided to function.") log.debug(" ".join(args)) if join: process = subprocess.Popen(args, cwd=self.path) process.communicate() else: process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=self.path) stdout, stderr = process.communicate() process.stdout = stdout and force_unicode(stdout.strip()) or u"" process.stderr = stderr and force_unicode(stderr.strip()) or u"" process.split = filter(lambda x: x, map(lambda x: x.strip(), process.stdout.split(u"\n"))) if process.returncode != 0: message = "%s: %s: %s" % (process.returncode, process.stderr, process.stdout) log.debug(message) if exceptions: raise Exception(message) return process
def git(self, *args, **kwargs): split = kwargs.pop('split', False) join = kwargs.pop('join', False) command = ['git'] + list(args) log.debug(' '.join(command)) if join: p = subprocess.Popen(command) p.communicate() else: p = subprocess.Popen(command, stdout=subprocess.PIPE) (stdout, stderr) = p.communicate(None) stdout = force_unicode(stdout) stderr = force_unicode(stderr) if split: stdout = filter(lambda x: x, map(lambda x: x.strip(), stdout.split(u'\n'))) return stdout