commit:     323362ad64d9b0477a662c0d58eeec89e7e3948e
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Thu May 29 23:12:58 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Jun 12 21:11:49 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=323362ad

bzr.py: Adds update() function

Also adds _fix_brz_source() function to be used by add() and update().

---
 layman/overlays/bzr.py | 36 ++++++++++++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 4 deletions(-)

diff --git a/layman/overlays/bzr.py b/layman/overlays/bzr.py
index 9cfa8b5..20d2491 100644
--- a/layman/overlays/bzr.py
+++ b/layman/overlays/bzr.py
@@ -49,6 +49,16 @@ class BzrOverlay(OverlaySource):
             config, _location, ignore)
         self.subpath = None
 
+    def _fix_bzr_source(self, source):
+    '''
+    Adds trailing slash to source URL if needed.
+
+    @params source: source URL, string.
+    '''
+        if source.endswith("/"):
+            return source
+        return source + '/'
+    
     def add(self, base):
         '''Add overlay.'''
 
@@ -58,10 +68,7 @@ class BzrOverlay(OverlaySource):
         cfg_opts = self.config["bzr_addopts"]
         target = path([base, self.parent.name])
 
-        if self.src.endswith("/"):
-            src = self.src
-        else:
-            src = self.src + '/'
+        src = self._fix_bzr_source(self.src)
 
         # bzr get SOURCE TARGET
         if len(cfg_opts):
@@ -73,6 +80,27 @@ class BzrOverlay(OverlaySource):
             self.run_command(self.command(), args, cmd=self.type),
             cwd=target)
 
+    def update(self, base, src):
+        '''
+        Updates overlay src-url.
+        
+        @params base: base location where all overlays are installed.
+        @params src: source URL.
+        '''
+
+        if not self.supported():
+            return 1
+
+        target = path([base, self.parent.name])
+
+        # bzr bind SOURCE
+        args = ['bind', self._fix_bzr_source(src)]
+        if self.config['quiet']:
+            args.append('--quiet')
+        return self.postsync(
+            self.run_command(self.command(), args, cmd=self.type),
+            cwd=target)
+
     def sync(self, base):
         '''Sync overlay.'''
 

Reply via email to