Local imports and better missing-client detection in client-based VCS classes.
authorW. Trevor King <wking@drexel.edu>
Wed, 23 Feb 2011 02:02:11 +0000 (21:02 -0500)
committerW. Trevor King <wking@drexel.edu>
Wed, 23 Feb 2011 02:02:11 +0000 (21:02 -0500)
libbe/storage/vcs/arch.py
libbe/storage/vcs/darcs.py
libbe/storage/vcs/git.py
libbe/storage/vcs/monotone.py

index d12a91a7e58332e2892359d56583a4ecf34b3752..6c519c478add587edd685abf54873125d8355844 100644 (file)
@@ -33,11 +33,11 @@ import sys
 import time # work around http://mercurial.selenic.com/bts/issue618
 
 import libbe
-import libbe.ui.util.user
-import libbe.storage.util.config
-from libbe.util.id import uuid_gen
-from libbe.util.subproc import CommandError
-import base
+from ...ui.util import user as _user
+from ...util.id import uuid_gen
+from ...util.subproc import CommandError
+from ..util import config as _config
+from . import base
 
 if libbe.TESTING == True:
     import unittest
@@ -51,7 +51,7 @@ class CantAddFile(Exception):
 
 DEFAULT_CLIENT = 'tla'
 
-client = libbe.storage.util.config.get_val(
+client = _config.get_val(
     'arch_client', default=DEFAULT_CLIENT)
 
 def new():
@@ -77,14 +77,17 @@ class Arch(base.VCS):
         self.__updated = [] # work around http://mercurial.selenic.com/bts/issue618
 
     def _vcs_version(self):
-        status,output,error = self._u_invoke_client('--version')
+        try:
+            status,output,error = self._u_invoke_client('--version')
+        except CommandError:  # command not found?
+            return None
         version = '\n'.join(output.splitlines()[:2])
         return version
 
     def _vcs_detect(self, path):
         """Detect whether a directory is revision-controlled using Arch"""
         if self._u_search_parent_directories(path, '{arch}') != None :
-            libbe.storage.util.config.set_val('arch_client', client)
+            _config.set_val('arch_client', client)
             return True
         return False
 
@@ -102,7 +105,7 @@ class Arch(base.VCS):
         # http://regexps.srparish.net/tutorial-tla/new-archive.html#Creating_a_New_Archive
         assert self._archive_name == None
         id = self.get_user_id()
-        name, email = libbe.ui.util.user.parse_user_id(id)
+        name, email = _user.parse_user_id(id)
         if email == None:
             email = '%s@example.com' % name
         trailer = '%s-%s' % ('bugs-everywhere-auto', uuid_gen()[0:8])
index 4aa876649b05eec4cfa1b302eb114e1754e1867a..4a19d1d08a9539c4e1e84c81332ec3ad7fd15d8e 100644 (file)
@@ -35,7 +35,8 @@ except ImportError: # look for non-core module
 from xml.sax.saxutils import unescape
 
 import libbe
-import base
+from ...util.subproc import CommandError
+from . import base
 
 if libbe.TESTING == True:
     import doctest
@@ -57,7 +58,10 @@ class Darcs(base.VCS):
         self.__updated = [] # work around http://mercurial.selenic.com/bts/issue618
 
     def _vcs_version(self):
-        status,output,error = self._u_invoke_client('--version')
+        try:
+            status,output,error = self._u_invoke_client('--version')
+        except CommandError:  # command not found?
+            return None
         return output.strip()
 
     def version_cmp(self, *args):
index 7c9199d278ad053dbe667e376dbd0e50244663cc..5c173033d12672135c5818d015297c50630fc5d6 100644 (file)
@@ -30,8 +30,8 @@ import shutil
 import unittest
 
 import libbe
-import libbe.ui.util.user
-import base
+from ...ui.util import user as _user
+from . import base
 
 if libbe.TESTING == True:
     import doctest
@@ -52,7 +52,10 @@ class Git(base.VCS):
         self.versioned = True
 
     def _vcs_version(self):
-        status,output,error = self._u_invoke_client('--version')
+        try:
+            status,output,error = self._u_invoke_client('--version')
+        except CommandError:  # command not found?
+            return None
         return output.strip()
 
     def _vcs_get_user_id(self):
@@ -71,10 +74,10 @@ class Git(base.VCS):
         if name != '' or email != '': # got something!
             # guess missing info, if necessary
             if name == '':
-                name = libbe.ui.util.user.get_fallback_username()
+                name = _user.get_fallback_username()
             if email == '':
-                email = libe.ui.util.user.get_fallback_email()
-            return libbe.ui.util.user.create_user_id(name, email)
+                email = _user.get_fallback_email()
+            return _user.create_user_id(name, email)
         return None # Git has no infomation
 
     def _vcs_detect(self, path):
index 65ecd913719dab6f6f1991854186e6d62f7aba47..e99a6ec1913a1a0e6b7e3f18f7a6978fbe27f709 100644 (file)
@@ -29,8 +29,8 @@ import unittest
 
 import libbe
 import libbe.ui.util.user
-from libbe.util.subproc import CommandError
-import base
+from ...util.subproc import CommandError
+from . import base
 
 if libbe.TESTING == True:
     import doctest
@@ -54,7 +54,10 @@ class Monotone (base.VCS):
         self._key = None
 
     def _vcs_version(self):
-        status,output,error = self._u_invoke_client('automate', 'interface_version')
+        try:
+            status,output,error = self._u_invoke_client('automate', 'interface_version')
+        except CommandError:  # command not found?
+            return None
         return output.strip()
 
     def version_cmp(self, *args):