aboutsummaryrefslogtreecommitdiff
blob: 6367899b682a8d980dcb6b7eb022698dd98ba142 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/python -O

# Copyright (C) 2004 Eric Olinger, http://evvl.rustedhalo.net
# Distributed under the terms of the GNU General Public License, v2 or later
# Author : Eric Olinger <EvvL AT RustedHalo DOT net>

# I changed stuff. solar@gentoo.org

import os,sys

sys.stderr=open("/dev/null","w")

import portage,string,re
from stat import *
from output import *
from xml.sax import saxutils, make_parser, handler
from xml.sax.handler import feature_namespaces

nocolor()

version="0.2.5"

def usage(code):
	"""Prints the uage information for this script"""
	print green("metadata v" + version + "\n")
	print "Usage: metadata [package-cat/]package"
	sys.exit(code)

def grab_changelog_stuff(catpkg):
	try:
		foo=""
		os.chdir(portage.settings["PORTDIR"] + "/" + catpkg)
		r=re.compile("<[-.A-Za-z_0-9]+@gentoo.org>", re.I)

		s="\n".join(portage.grabfile("ChangeLog"))

		d={}
		for x in r.findall(s):
			if x not in d:
				d[x] = 0
			d[x] += 1

		l=[(d[x], x) for x in d.keys()]
		l.sort(lambda x,y: cmp(y[0], x[0]))
		for x in l:
			p = str(x[0]) +" "+ x[1].lstrip("<").rstrip(">")
			foo += p[:p.find("@")]+", "
		return foo
	except:
		raise

def main ():
	if len( sys.argv ) < 2:
		usage( 1 )

	for pkg in sys.argv[1:]:
		package_list = portage.portdb.xmatch("match-all", pkg)
		print darkgreen("Package: ") + portage.pkgsplit(package_list[0])[0] + " " + darkgreen("ChangeLog: ") + grab_changelog_stuff(portage.pkgsplit(package_list[0])[0])

if __name__ == '__main__':
	main()