#!/usr/bin/python import collections, datetime, os, os.path, sys import pkgcore.config # tested with pkgcore-0.7.7.8 def main(argv): try: outputdir = argv[1] except IndexError: print('Usage: %s output-directory/' % argv[0]) return 1 c = pkgcore.config.load_config() portdir = c.repo['portdir'] output = collections.defaultdict(set) for p in portdir: for eclass in p.data.get('_eclasses_', ()): output[eclass].add('%s/%s\n' % (p.category, p.PN)) try: os.mkdir(outputdir) except OSError: pass # XXX: removing old eclasses? os.chdir(outputdir) for eclass in output: f = open('%s.txt' % eclass, 'w') f.writelines(sorted(output[eclass])) f.close() f = open('index.html', 'w') f.write(''' Packages inheriting eclasses

Packages inheriting eclasses

(tree synced at %s UTC)

''' % (max([len(e) for e in output]), datetime.datetime.fromtimestamp(os.path.getmtime(portdir.location)).strftime("%a %b %d %Y %H:%M:%S"), '\n'.join(['
  • %s.eclass (%d packages),
  • ' % (e, e, len(output[e])) for e in sorted(output)]))) f.close() return 0 if __name__ == '__main__': sys.exit(main(sys.argv))