#!/usr/bin/env python # -*- coding: UTF-8 -*- # Copyright 2008 Gentoo Foundation # Distributed under the terms of the GNU General Public Licence v3 import sys from xml.sax import parse, handler herd_emails = [] class HerdsHandler(handler.ContentHandler): def __init__(self): self.maintainer = False self.email = False self.chars = '' def startElement(self, name, attrs): if name == 'maintainer': self.maintainer = True elif name == 'email' and not self.maintainer: self.email = True def endElement(self, name): if name == 'maintainer': self.maintainer = False elif name == 'email' and not self.maintainer: herd_emails.append(self.chars) self.email = False self.chars = '' def characters(self, content): if self.email: self.chars += content class MetadataHandler(handler.ContentHandler): def __init__(self, file): self.email = False self.chars = '' self.file = file def startElement(self, name, attrs): if name == 'email': self.email = True def endElement(self, name): if name == 'email': if self.chars in herd_emails: print "Herd as maintainer in %s: %s" % (self.file, self.chars) self.email = False self.chars = '' def characters(self, content): if self.email: self.chars += content parse('/mnt/checkouts/gentoo/xml/htdocs/proj/en/metastructure/herds/herds.xml', HerdsHandler()) #import portage #portage.portdb.cp_all(): #file = '/usr/portage/%s/metadata.xml' % cp from xml.etree.ElementTree import ElementTree import glob for file in glob.glob('/usr/portage/*/*/metadata.xml'): e = ElementTree(file=file) for email in e.findall('maintainer/email'): text = email.text if text in herd_emails: print 'Herd as maintainer in %s: %s' % (file, text)