GitCommand: teach run() how to return raw output stream
Currently, clients which want the raw output from a Git command must sneakily extract the raw 'fd' from the utf8-encoding wrapper returned by GitCommand.run(). This is ugly and fragile. Instead, provide a formal mechanism for requesting raw output. Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Alberto Bertogli <albertito@blitiri.com.ar>
This commit is contained in:
parent
66afd72d6d
commit
43f4132bf1
9
git.py
9
git.py
@ -84,6 +84,7 @@ class GitCommand (object):
|
||||
self._args = list(args)
|
||||
self._kwargs = {}
|
||||
self._stdin_buf = None
|
||||
self._raw = False
|
||||
self._override = False
|
||||
for k, v in kwargs:
|
||||
self.__setattr__(k, v)
|
||||
@ -99,6 +100,12 @@ class GitCommand (object):
|
||||
"""Adds an argument."""
|
||||
self._args.append(a)
|
||||
|
||||
def raw(self, b):
|
||||
"""Request raw rather than utf8-encoded command output."""
|
||||
self._override = True
|
||||
self._raw = b
|
||||
self._override = False
|
||||
|
||||
def stdin(self, s):
|
||||
"""Sets the contents we will send in stdin."""
|
||||
self._override = True
|
||||
@ -118,7 +125,7 @@ class GitCommand (object):
|
||||
|
||||
params.extend(self._args)
|
||||
|
||||
return run_git(self._path, params, self._stdin_buf)
|
||||
return run_git(self._path, params, self._stdin_buf, raw = self._raw)
|
||||
|
||||
|
||||
class SimpleNamespace (object):
|
||||
|
Loading…
Reference in New Issue
Block a user