[yum-cvs] /yum-utils repo-rss.py,1.4,1.4.2.1

Tim Lauridsen timlau at linux.duke.edu
Wed Feb 14 10:45:28 UTC 2007


Update of /home/groups/yum/cvs//yum-utils
In directory login1.linux.duke.edu:/tmp/cvs-serv10876

Modified Files:
      Tag: yum-utils-1_0_X
	repo-rss.py 
Log Message:
Added patch to make repo-rss create one feed per group found in comps.xml.
Thanks to Aurelien Bompard (rhbz #191061)

Index: repo-rss.py
===================================================================
RCS file: /home/groups/yum/cvs//yum-utils/repo-rss.py,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- repo-rss.py	25 Sep 2006 06:57:43 -0000	1.4
+++ repo-rss.py	14 Feb 2007 10:45:26 -0000	1.4.2.1
@@ -18,6 +18,8 @@
 import yum
 import yum.Errors
 from yum.misc import getCacheDir
+from yum.comps import Comps, CompsException
+from repomd.mdErrors import RepoMDError
 import sys
 import os
 import libxml2
@@ -165,6 +167,22 @@
         del self.fo
         self.doc.freeDoc()
         del self.doc
+    
+    
+def makeFeed(filename, title, link, description, recent, my):
+    rssobj = RepoRSS(fn=filename)
+    rssobj.title = title
+    rssobj.link = link
+    rssobj.description = description
+    rssobj.startRSS()
+    # take recent updates only and dump to an rss compat output
+    if len(recent) > 0:
+        for pkg in recent:
+            repo = my.repos.getRepo(pkg.repoid)
+            url = repo.urls[0]
+            rssobj.doPkg(pkg, url)
+    rssobj.closeRSS()
+
 
 def main(options, args):
     days = options.days
@@ -203,20 +221,31 @@
             sys.exit(1)
     
     recent = my.getRecent(days=days)
-    rssobj = RepoRSS(fn=options.filename)
-    rssobj.title = options.title
-    rssobj.link = options.link
-    rssobj.description = options.description
-    rssobj.startRSS()
+    if options.groups:
+        comps = Comps()
+        for repo in my.repos.listEnabled():
+            try: 
+                groupsfn = repo.getGroups()
+            except RepoMDError: # no comps.xml file
+                groupsfn = None
+            if not groupsfn:
+                continue
+            try:
+                comps.add(groupsfn)
+            except (AttributeError, CompsException):
+                print 'Error parsing comps file %s !' % groupsfn
+                print 'Multiple feed generation impossible.'
+                sys.exit(1)
+        for group in comps.groups:
+            grouppkgs = group.optional_packages.keys() + group.default_packages.keys() + group.conditional_packages.keys()
+            title = "%s - %s" % (options.title, group.name)
+            description = "%s. %s" % (options.description, group.name)
+            filename = "%s.xml" % group.groupid
+            packages = [ pkg for pkg in recent if pkg.name in grouppkgs ]
+            makeFeed(filename, title, options.link, description, packages, my)
+    # Always make a full feed
+    makeFeed(options.filename, options.title, options.link, options.description, recent, my)
     
-    # take recent updates only and dump to an rss compat output
-    if len(recent) > 0:
-        for pkg in recent:
-            repo = my.repos.getRepo(pkg.repoid)
-            url = repo.urls[0]
-            rssobj.doPkg(pkg, url)
-        
-    rssobj.closeRSS()
 
 
 if __name__ == "__main__":
@@ -238,6 +267,8 @@
                       help='most recent (in days): %default')
     parser.add_option("--tempcache", default=False, action="store_true",
                       help="Use a temp dir for storing/accessing yum-cache")
+    parser.add_option("-g", action='store_true', dest='groups', default=False,
+                      help="Generate one feed per package group")
 
     (options, args) = parser.parse_args()
 




More information about the Yum-cvs-commits mailing list