#!/usr/bin/python -OO __revision__ = "$Revision: 1.1 $" # $Source: /var/cvsroot/gentoo/src/packages/genxml.py,v $ from p_objects import * def to_xml(p_object): """Converts portage objects to XML""" if isinstance(p_object, Ebuild): begin = ('' % (p_object.category, p_object.name, p_object.version, p_object.when_found.gmtime().strftime("%a, %d %b %Y %H:%M:%S +0000"))) end = '' return '\n '.join([begin] + ['%s' % x for x in p_object.archs] + [end]) elif isinstance(p_object, Package): begin = '' % (p_object.category, p_object.name) end = '' description = ('' % p_object.description) homepage = ''.join(['' % x for x in p_object.homepages]) license = ''.join(['%s' % x for x in p_object.licenses]) return '\n '.join([begin, description, homepage, license] + [to_xml(ebuild) for ebuild in p_object.ebuilds] + [end]) elif isinstance(p_object, Category): begin = '' % p_object.name end = '' return '\n '.join([begin] + [to_xml(package) for package in p_object.packages] + [end]) elif isinstance(p_object, SubArch): begin = ('' % (p_object.arch, p_object.sub)) end = '' string = '' string = '\n '.join([begin] + [to_xml(category) for category in p_object.categories] + [end]) return string else: return '\n\t' % p_object if __name__ == '__main__': from ebuilddb import db_connect import os db = db_connect() collection = ArchCollection() factory = CategoryFactory(db) for arch in config.ARCHLIST: for sub in SUBARCHS: print arch, sub categories = [factory.create(arch, sub, category.name) for category in factory.get(arch, sub)] collection.collection[arch][sub].set_categories(categories) filename = collection.collection[arch][sub].xml_filename #print filename new_filename = filename + '.new' f_object = open(new_filename,'w') f_object.write('\n') f_object.write(to_xml(collection.collection[arch][sub])) f_object.close() os.rename(new_filename, filename)