git » git-arr » commit 43f4132

GitCommand: teach run() how to return raw output stream

author Eric Sunshine
2015-01-13 09:57:07 UTC
committer Alberto Bertogli
2015-01-13 19:51:44 UTC
parent 66afd72d6d49ad26f53457c4fda31d01c927e0fa

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>

git.py +8 -1

diff --git a/git.py b/git.py
index 10cddcd..718d2fa 100644
--- a/git.py
+++ b/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):