commit:     89bf796adb52fac6c9472f5dc40bc137e4ab0d44
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 10 20:26:45 2014 +0000
Commit:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
CommitDate: Fri Aug 15 20:57:38 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=89bf796a

api.py: Adds disable and enable repo functions

X-Gentoo-Bug: 512316
X-Gentoo-Bug-URL: https://bugs.gentoo.org/512316

---
 layman/api.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 52 insertions(+), 2 deletions(-)

diff --git a/layman/api.py b/layman/api.py
index 17c7998..bae6972 100755
--- a/layman/api.py
+++ b/layman/api.py
@@ -122,7 +122,7 @@ class LaymanAPI(object):
                     self._get_installed_db().select(ovl))
             except Exception as e:
                 self._error(
-                        "Exception caught disabling repository '"+ovl+
+                        "Exception caught removing repository '"+ovl+
                             "':\n"+str(e))
             results.append(success)
             self.get_installed(dbreload=True)
@@ -155,7 +155,7 @@ class LaymanAPI(object):
                 success = self._get_installed_db().add(
                     self._get_remote_db().select(ovl))
             except Exception as e:
-                self._error("Exception caught enabling repository '"+ovl+
+                self._error("Exception caught installing repository '"+ovl+
                     "' : "+str(e))
             results.append(success)
             self.get_installed(dbreload=True)
@@ -183,6 +183,56 @@ class LaymanAPI(object):
         return success
 
 
+    def disable_repos(self, repos, update_news=False):
+        repos = self._check_repo_type(repos, "disable_repo")
+        results = []
+        for ovl in repos:
+            if not self.is_repo(ovl):
+                self.output.error(UnknownOverlayMessage(ovl))
+                result.append(False)
+                continue
+            success = False
+            try:
+                success = self._get_installed_db().disable(
+                    self._get_installed_db().select(ovl))
+            except Exception as e:
+                self._error('Exception caught disabling repository "%(repo)s"'\
+                    ': %(err)s' % ({'repo': ovl, 'err': e}))
+            results.append(success)
+            self.get_installed(dbreload=True)
+        if (True in results) and update_news:
+            self.update_news(repos)
+
+        if False in results:
+            return False
+        return True
+
+
+    def enable_repos(self, repos, update_news=False):
+        repos = self._check_repo_type(repos, "enable_repo")
+        results = []
+        for ovl in repos:
+            if not self.is_repo(ovl):
+                self.output.error(UnknownOverlayMessage(ovl))
+                result.append(False)
+                continue
+            success = False
+            try:
+                success = self._get_installed_db().enable(
+                    self._get_installed_db().select(ovl))
+            except Exception as e:
+                self._error('Exception caught enabling repository "%(repo)s"'\
+                    ': %(err)s' % ({'repo': ovl, 'err': e}))
+            results.append(success)
+            self.get_installed(dbreload=True)
+        if (True in results) and update_news:
+            self.update_news(repos)
+
+        if False in results:
+            return False
+        return True
+
+
     def get_all_info(self, repos, local=False):
         """retrieves the recorded information about the repo(s)
         specified by repo-id

Reply via email to