[yum-cvs] yum/yum repos.py,1.70,1.71

Gijs Hollestelle gijs at login.linux.duke.edu
Tue Mar 8 10:41:39 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv23086

Modified Files:
	repos.py 
Log Message:
Enable wildcards to be used for enabling and disabling repositories.
Based on a patch by Konstantin Ryabitsev.



Index: repos.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/repos.py,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- repos.py	7 Mar 2005 07:01:28 -0000	1.70
+++ repos.py	8 Mar 2005 10:41:36 -0000	1.71
@@ -20,6 +20,7 @@
 import os.path
 import types
 import re
+import fnmatch
 import urlparse
 
 import Errors
@@ -32,6 +33,8 @@
 from packages import YumAvailablePackage
 import mdcache
 
+_is_fnmatch_pattern = re.compile(r"[*?[]").search
+
 class YumPackageSack(packageSack.PackageSack):
     """imports/handles package objects from an mdcache dict object"""
     def __init__(self, packageClass):
@@ -134,15 +137,41 @@
             raise Errors.RepoError, \
                 'Error getting repository data for %s, repository not found' % (repoid)
 
+    def findRepos(self,pattern):
+        """find all repositories matching fnmatch `pattern`"""
+
+        result = []
+        match = re.compile(fnmatch.translate(pattern)).match
+
+        for name,repo in self.repos.items():
+            if match(name):
+                result.append(repo)
+        return result
+        
     def disableRepo(self, repoid):
-        """disable a repository from use"""
-        thisrepo = self.getRepo(repoid)
-        thisrepo.disable()
-            
+        """disable a repository from use
+        
+        fnmatch wildcards may be used to disable a group of repositories.
+        """
+        if _is_fnmatch_pattern(repoid):
+            for repo in self.findRepos(repoid):
+                repo.disable()
+        else:
+            thisrepo = self.getRepo(repoid)
+            thisrepo.disable()
+                
     def enableRepo(self, repoid):
-        """disable a repository from use"""
-        thisrepo = self.getRepo(repoid)
-        thisrepo.enable()
+        """enable a repository for use
+        
+        fnmatch wildcards may be used to enable a group of repositories.
+        """
+        if _is_fnmatch_pattern(repoid):
+            repos = self.findRepos(repoid)
+            for repo in self.findRepos(repoid):
+                repo.enable()
+        else:
+            thisrepo = self.getRepo(repoid)
+            thisrepo.enable()
             
     def listEnabled(self):
         """return list of enabled repo objects"""




More information about the Yum-cvs-commits mailing list