[yum-cvs] yum-utils repoquery.py,1.19,1.20

Panu Matilainen pmatilai at login.linux.duke.edu
Tue Aug 9 16:50:26 UTC 2005


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

Modified Files:
	repoquery.py 
Log Message:
- Implement --pkgnarrow=available|recent.. option
- Add --show-dupes option


Index: repoquery.py
===================================================================
RCS file: /home/groups/yum/cvs/yum-utils/repoquery.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- repoquery.py	20 Jul 2005 11:06:34 -0000	1.19
+++ repoquery.py	9 Aug 2005 16:50:24 -0000	1.20
@@ -34,7 +34,7 @@
 from rpmUtils.arch import getArchList
 from yum.misc import getCacheDir
 
-version = "0.0.9"
+version = "0.0.10"
 
 flags = { 'EQ':'=', 'LT':'<', 'LE':'<=', 'GT':'>', 'GE':'>=', 'None':' '}
 
@@ -260,12 +260,25 @@
     def returnNewestByName(self, name):
         pkgs = []
         try:
-            exact, match, unmatch = yum.packages.parsePackages(self.pkgSack.returnPackages(), [name], casematch=1)
+            exact, match, unmatch = yum.packages.parsePackages(self.returnPkgList(), [name], casematch=1)
             pkgs = exact + match
         except repomd.mdErrors.PackageSackError, err:
             self.errorlog(0, err)
         return self.queryPkgFactory(pkgs)
 
+    def returnPkgList(self):
+        what = self.options.pkgnarrow
+        ygh = self.doPackageLists(what)
+
+        if what == "all":
+            return ygh.available + ygh.installed
+        
+        if hasattr(ygh, what):
+            return getattr(ygh, what)
+        else:
+            self.errorlog(1, "Unknown pkgnarrow method: %s" % what)
+            return []
+    
     def returnPackagesByDep(self, depstring):
         provider = []
         try:
@@ -295,7 +308,7 @@
             
     def matchPkgs(self, items):
         if not items:
-            return self.queryPkgFactory(self.pkgSack.returnPackages())
+            return self.queryPkgFactory(self.returnPkgList())
         
         pkgs = []
         notfound = {}
@@ -423,12 +436,16 @@
     parser.add_option("--whatrequires", default=0, action="store_true",
                       help="query what package(s) require a capability")
     # group stuff
-    parser.add_option("--group", default=0, action="store_true", 
+    parser.add_option("-g", "--group", default=0, action="store_true", 
                       help="query groups instead of packages")
     parser.add_option("--grouppkgs", default="required", dest="grouppkgs",
                       help="filter which packages (all,optional etc) are shown from groups")
     # other opts
-    parser.add_option("", "--repoid", default=[], action="append",
+    parser.add_option("--pkgnarrow", default="all", dest="pkgnarrow",
+                      help="query only installed/available/recent/updates packages")
+    parser.add_option("--show-dupes", default=0, action="store_true",
+                      help="show all versions of packages")
+    parser.add_option("--repoid", default=[], action="append",
                       help="specify repoids to query, can be specified multiple times (default is all enabled)")
     parser.add_option("-v", "--version", default=0, action="store_true",
                       help="show program version and exit")
@@ -514,6 +531,9 @@
     if opts.cache:
         repoq.conf.setConfigOption('cache', 1)
         repoq.errorlog(0, 'Running from cache, results might be incomplete.')
+
+    if opts.show_dupes:
+        repoq.conf.setConfigOption('showdupesfromrepos', 1)
     
     if len(opts.repoid) > 0:
         for repo in repoq.repos.findRepos('*'):
@@ -532,12 +552,12 @@
     
     try:
         repoq.doSackSetup(archlist=archlist)
+        repoq.doTsSetup()
         if needfiles:
             repoq.repos.populateSack(with='filelists')
         if needother:
             repoq.repos.populateSack(with='otherdata')
         if needgroup:
-            repoq.doTsSetup()
             repoq.doGroupSetup()
     except yum.Errors.RepoError, e:
         repoq.errorlog(1, e)




More information about the Yum-cvs-commits mailing list