commit:     87eefca1205a1952abedba2ab8c8b0cbe7b35842
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 17 03:08:29 2014 +0000
Commit:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
CommitDate: Thu Jun 19 03:49:57 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=87eefca1

layman.py: Moves API initialization to separate function

Also adds new() function for subprocess variant of layman plugin
module.

---
 layman/sync/layman.py | 77 ++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 55 insertions(+), 22 deletions(-)

diff --git a/layman/sync/layman.py b/layman/sync/layman.py
index 7adf8c6..dac9569 100644
--- a/layman/sync/layman.py
+++ b/layman/sync/layman.py
@@ -33,29 +33,59 @@ class Layman(SyncBase):
         SyncBase.__init__(self, 'layman', 'app-portage/layman')
 
 
+    def _get_optargs(self, args):
+         if self.settings:
+            if self.settings.get('NOCOLOR'):
+                args.append('-N')
+            if self.settings.get('PORTAGE_QUIET'):
+                args.append('-q')
+
     def new(self, **kwargs):
         '''Do the initial download and install of the repository'''
-        pass
+        if kwargs:
+            self._kwargs(kwargs)
+        emerge_config = self.options.get('emerge_config', None)
+        portdb = self.options.get('portdb', None)
+        args = []
+        msg = '>>> Starting to add new layman overlay %(repo)s' % ({'repo': 
self.repo.name})
+        self.logger(self.xterm_titles, msg)
+        writemsg_level(msg + '\n')
 
+        args.append('layman -n')
+        self._get_optargs(args)
+        args.append('-a')
+        args.append(self.repo.name)
+
+        command = ' '.join(args)
+
+        exitcode = portage.process.spawn_bash("%(command)s" % \
+            ({'command': command}),
+            **portage._native_kwargs(self.spawn_kwargs))
+        if exitcode != os.EX_OK:
+            msg = "!!! layman sync error in %(repo)s" % ({'repo': 
self.repo.name})
+            self.logger(self.xterm_titles, msg)
+            writemsg_level(msg + "\n", level=logging.ERROR, noiselevel=-1)
+            return (exitcode, False)
+        msg = ">>> Addition of layman repo succeeded: %(repo)s" % ({'repo': 
self.repo.name})
+        self.logger(self.xterm_titles, msg)
+        writemsg_level(msg + "\n")
+
+        return (exitcode, True)
 
     def _sync(self):
         ''' Update existing repository'''
         emerge_config = self.options.get('emerge_config', None)
         portdb = self.options.get('portdb', None)
         args = []
-        msg = '>>> Starting layman sync for %s...' % self.repo.location
+        msg = '>>> Starting layman sync for %s...' % self.repo.name
         self.logger(self.xterm_titles, msg)
         writemsg_level(msg + '\n')
-        args.append('layman -n')
-
-        if self.settings:
-            if self.settings.get('NOCOLOR'):
-                args.append('-N')
-            if self.settings.get('PORTAGE_QUIET'):
-                args.append('-q')
 
+        args.append('layman -n')
+        self._get_optargs(args)
         args.append('-s')
         args.append(self.repo.name)
+
         exitcode = portage.process.spawn_bash("%s" % \
             (' '.join(args)),
             **portage._native_kwargs(self.spawn_kwargs))
@@ -81,30 +111,33 @@ class PyLayman(SyncBase):
         return "Layman"
 
     def __init__(self):
+        SyncBase.__init__(self, 'layman', 'app-portage/layman')
 
-        SyncBase.__init__(self, '', 'app-portage/layman')
+
+    def _get_layman_api(self):
 
         config = BareConfig()
         self.message = Message(out=sys.stdout, err=sys.stderr)
-        
+
         options = {
             'config': config.get_option('config'),
-            'quiet': portage.settings.get('PORTAGE_QUIET'),
+            'quiet': self.settings.get('PORTAGE_QUIET'),
             'quietness': config.get_option('quietness'),
             'output': self.message,
-            'nocolor': portage.settings.get('NOCOLOR'),
-            'root': portage.settings.get('EROOT'),
-            'verbose': portage.settings.get('PORTAGE_VERBOSE'),
-            'width': portage.settings.get('COLUMNWIDTH'),
+            'nocolor': self.settings.get('NOCOLOR'),
+            'root': self.settings.get('EROOT'),
+            'verbose': self.settings.get('PORTAGE_VERBOSE'),
+            'width': self.settings.get('COLUMNWIDTH'),
 
         }
 
         self.config = OptionConfig(options=options)
-        
-        LaymanAPI.__init__(self, self.config,
-                             report_errors=True,
-                             output=self.config['output']
-                            )
+
+        layman_api = LaymanAPI(self.config,
+                               report_errors=True,
+                               output=self.config['output']
+                               )
+        return layman_api
 
     def new(self, **kwargs):
         '''Do the initial download and install of the repository'''
@@ -113,4 +146,4 @@ class PyLayman(SyncBase):
    
     def _sync(self):
         ''' Update existing repository'''
-        pass
+        layman_inst = self._get_layman_api()

Reply via email to