#!/usr/bin/env python # -*- coding: utf-8 -*- # Written by Sebastian Pipping # Licensed under GPL v2 or later from __future__ import print_function import xml.etree.ElementTree as ET # Python 2.5 import sys _PAST_GENTOO_ACCOUNT, _CHAT_OR_LOCAL_ONLY = range(2) _past_nicknames_for = { 'chithanh': ( ('chithead', _CHAT_OR_LOCAL_ONLY), ), 'fauli': ( ('opfer', _PAST_GENTOO_ACCOUNT), ), 'stkn': ( ('aura', _CHAT_OR_LOCAL_ONLY), ), 'r0bertz': ( ('zhllg', _CHAT_OR_LOCAL_ONLY), ) } _external_contributors = { 'caratorn': ('Charles Clément', 'caratorn@gmail.com'), 'frquadrat': ('Frank-Ralph Reiser', 'frank.ralph.reiser@gmail.com'), 'hey_neken': ('Mikel Olasgasti', 'hey_neken@mundurat.net'), 'mellen': ('Tais M. Hansen', 'mellen@osd.dk'), 'tacvbo': ('Octavio Ruiz', 'tacvbo@tacvbo.net'), 'rambaldi': ('Rambaldi', 'rambaldi@xs4all.nl'), 'svoop': ('Sven Schwyn', 'gentoo@bitcetera.com'), } def _produce_line(svn_nick, realname, address): line = '%s = %s <%s>' % (svn_nick, realname, address) print(line.encode('utf-8')) def _gentoo_address(nick): return '%s@gentoo.org' % nick def main(args): if len(args) != 2: print('USAGE: %s GENTOO/xml/htdocs/proj/en/devrel/roll-call/userinfo.xml' % args[0]) return 1 try: userlist = ET.parse(args[1]) except IOError as e: print(str(e), file=sys.stderr) return 1 for user in userlist.findall('user'): svn_nick = user.attrib['username'] location = user.find('location') realname = user.find('realname').attrib['fullname'].strip() _produce_line(svn_nick, realname, _gentoo_address(svn_nick)) past_nicknames = _past_nicknames_for.get(svn_nick, []) for alias, kind in past_nicknames: if kind == _PAST_GENTOO_ACCOUNT: gentoo_nick=alias elif kind == _CHAT_OR_LOCAL_ONLY: gentoo_nick=svn_nick else: assert False, 'Invalid kind %s' % str(kind) _produce_line(alias, realname, _gentoo_address(gentoo_nick)) for svn_nick, (realname, address) in sorted(_external_contributors.items()): _produce_line(svn_nick, realname.decode('utf-8'), address=address) return 0 if __name__ == '__main__': ret = main(sys.argv) sys.exit(ret)