[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