diff hglib/client.py @ 13:400cb1520834

client: add missing options to import_() and don't read the file before calling hg, just pass it as one of the arguments
author Idan Kamara <idankk86@gmail.com>
date Wed, 10 Aug 2011 00:42:43 +0300
parents c2a9b716cd80
children e0d21c9db20b
line wrap: on
line diff
--- a/hglib/client.py	Wed Aug 10 00:24:01 2011 +0300
+++ b/hglib/client.py	Wed Aug 10 00:42:43 2011 +0300
@@ -213,24 +213,34 @@
 
         return self._encoding
 
-    def import_(self, patch):
-        if isinstance(patch, str):
-            fp = open(patch)
-        else:
-            assert hasattr(patch, 'read')
-            assert hasattr(patch, 'readline')
+    def import_(self, patches, strip=None, force=False, nocommit=False,
+                bypass=False, exact=False, importbranch=False, message=None,
+                date=None, user=None, similarity=None):
+        """
+        patches can be a list of file names with patches to apply
+        or a file-like object that contains a patch (needs read and readline)
+        """
+        if hasattr(patches, 'read') and hasattr(patches, 'readline'):
+            patch = patches
 
-            fp = patch
+            def readline(size, output):
+                return patch.readline(size)
 
-        try:
-            def readline(size, output):
-                return fp.readline(size)
+            stdin = True
+            patches = ()
+            prompt = readline
+            input = patch.read
+        else:
+            stdin = False
+            prompt = None
+            input = None
 
-            self.rawcommand(cmdbuilder('import', _=True),
-                            prompt=readline, input=fp.read)
-        finally:
-            if fp != patch:
-                fp.close()
+        args = cmdbuilder('import', *patches, strip=strip, force=force,
+                          nocommit=nocommit, bypass=bypass, exact=exact,
+                          importbranch=importbranch, message=message,
+                          date=date, user=user, similarity=similarity, _=stdin)
+
+        self.rawcommand(args, prompt=prompt, input=input)
 
     def incoming(self, revrange=None, path=None):
         args = cmdbuilder('incoming',