[yum-cvs] yum-utils/plugins/changelog changelog.conf, 1.1, 1.2 changelog.py, 1.3, 1.4

Panu Matilainen pmatilai at login.linux.duke.edu
Wed Jun 29 09:00:38 UTC 2005


Update of /home/groups/yum/cvs/yum-utils/plugins/changelog
In directory login:/tmp/cvs-serv23444/plugins/changelog

Modified Files:
	changelog.conf changelog.py 
Log Message:
Add configuration option to changelog plugin to allow viewing the changelog
deltas before or after the transaction.


Index: changelog.conf
===================================================================
RCS file: /home/groups/yum/cvs/yum-utils/plugins/changelog/changelog.conf,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- changelog.conf	16 Jun 2005 20:33:31 -0000	1.1
+++ changelog.conf	29 Jun 2005 09:00:34 -0000	1.2
@@ -1,2 +1,5 @@
 [main]
 enabled=1
+
+# Set to 'pre' or 'post' to see changes before or after transaction
+when=pre

Index: changelog.py
===================================================================
RCS file: /home/groups/yum/cvs/yum-utils/plugins/changelog/changelog.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- changelog.py	27 Jun 2005 13:34:00 -0000	1.3
+++ changelog.py	29 Jun 2005 09:00:34 -0000	1.4
@@ -15,15 +15,13 @@
 # by Panu Matilainen <pmatilai at laiskiainen.org>
 #
 # TODO: 
-# - In posttrans we could get the changelogs from rpmdb thus avoiding
-#   the costly 'otherdata' import but it would be nice to be able to present
-#   the changelogs (optionally) *before* the y/n prompt and for that the import
-#   would be needed anyway.
-
+# - In 'pre' mode we could get the changelogs from rpmdb thus avoiding
+#   the costly 'otherdata' import.
 
 import time
 from yum.packages import YumInstalledPackage
 from rpmUtils.miscutils import splitFilename
+from yum.constants import *
 
 requires_api_version = '2.1'
 
@@ -41,11 +39,35 @@
     n,v,r,e,a = splitFilename(pkg.returnSimple('sourcerpm'))
     return n
 
+def show_changes(conduit, msg):
+    # Group by src.rpm name, not binary to avoid showing duplicate changelogs
+    # for subpackages
+    srpms = {}
+    ts = conduit.getTsInfo()
+    for tsmem in ts.getMembers():
+        name = srpmname(tsmem.po)
+        if srpms.has_key(name):
+            srpms[name].append(tsmem.po)
+        else:
+            srpms[name] = [tsmem.po]
+
+    conduit.info(2, "\n%s\n" % msg)
+    for name in srpms.keys():
+        rpms = []
+        if origpkgs.has_key(name):
+            for rpm in srpms[name]:
+                rpms.append("%s" % rpm)
+            conduit.info(2, ", ".join(rpms))
+            for line in changelog_delta(srpms[name][0], origpkgs[name]):
+                conduit.info(2, "%s\n" % line)
+
 def config_hook(conduit):
     parser = conduit.getOptParser()
     parser.add_option('--changelog', action='store_true', 
                       help='Show changelog delta of updated packages')
 
+    conduit.registerOpt('when', PLUG_OPT_STRING, PLUG_OPT_WHERE_MAIN, 'post')
+
 def postreposetup_hook(conduit):
     global changelog
     opts, args = conduit.getCmdLine()
@@ -54,7 +76,7 @@
     repos = conduit.getRepos()
     repos.populateSack(with='otherdata')
 
-def pretrans_hook(conduit):
+def postresolve_hook(conduit):
     if not changelog: 
         return
 
@@ -69,28 +91,14 @@
                 n,v,r,e,a = splitFilename(hdr['sourcerpm'])
                 origpkgs[n] = times[0]
 
+    if conduit.confString('main', 'when', default='post') == 'pre':
+        show_changes(conduit, 'Changes in packages about to be updated:')
+
 def posttrans_hook(conduit):
-    if not changelog:
+    if not changelog: 
         return
 
-    # Group by src.rpm name, not binary to avoid showing duplicate changelogs
-    # for subpackages
-    srpms = {}
-    ts = conduit.getTsInfo()
-    for tsmem in ts.getMembers():
-        name = srpmname(tsmem.po)
-        if srpms.has_key(name):
-            srpms[name].append(tsmem.po)
-        else:
-            srpms[name] = [tsmem.po]
+    if conduit.confString('main', 'when', default='post') == "post":
+        show_changes(conduit, 'Changes in updated packages:')
 
-    conduit.info(2, "\nChanges in updated packages:\n")
-    for name in srpms.keys():
-        rpms = []
-        if origpkgs.has_key(name):
-            for rpm in srpms[name]:
-                rpms.append("%s" % rpm)
-            conduit.info(2, ", ".join(rpms))
-            for line in changelog_delta(srpms[name][0], origpkgs[name]):
-                conduit.info(2, "%s\n" % line)
 




More information about the Yum-cvs-commits mailing list