From: Alexander Kanevskiy Date: Wed, 9 Oct 2013 23:47:10 +0000 (+0300) Subject: Script for generating domains file from Gerrit groups X-Git-Url: http://review.tizen.org/git/?p=scm%2Fmeta%2Fgit.git;a=commitdiff_plain;h=696772893c3c7cf5d3ca8083be7e77edc4158f81;hp=fac164fc3c0be0be65c9c11e5a6d24901fc1f78f Script for generating domains file from Gerrit groups --- diff --git a/scripts/generate-domains.py b/scripts/generate-domains.py new file mode 100755 index 0000000..30fe9f1 --- /dev/null +++ b/scripts/generate-domains.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# vim: ts=4 et sw=4 sts=4 ai sta: + +import sys +import json +import re +import netrc +import urlparse +import codecs + + +def main(argv): + + domains_list = [ + 'App Framework', + 'Applications', + 'Automotive', + 'Base', + 'Graphics & UI Framework', + 'Location', + 'Messaging', + 'Multimedia', + 'Network & Connectivity', + 'Platform Development', + 'SDK', + 'Security', + 'Social & Content', + 'System', + 'Telephony', + 'Testing', + 'Web Framework' + ] + + + roles = [ 'Architects', 'Maintainers', 'Integrators', 'Reviewers' ] + domains = {} + + # connection to gerrit + gerrit_url = "https://review.tizen.org/gerrit/" + user, _, password = netrc.netrc().hosts[urlparse.urlparse(gerrit_url).netloc] + from gerritrest import GerritREST + gerrit=GerritREST(gerrit_url, user, password) + + for domain in domains_list: + domains[domain] = { + 'domain': domain, + 'architects': [], + 'maintainers': [], + 'integrators': [], + 'reviewers': [] + } + for role in roles: + group = '%s - %s' % (domain, role) + print group + accounts = gerrit.get_group_members(group, recursive=True) + for account in accounts: + domains[domain][role.lower()].append(format_account(account)) + + with codecs.open("domains.new", "wb", encoding="utf-8") as outfile: + dump_all(domains, outfile) + +def format_account(account): + out = account.get('name','') + if 'email' in account: + out += " <%s>" % account['email'] + return out.strip() + + +def dump_all(domains, outfp = None): + names = sorted(domains.keys()) + for name in names: + out = dumps_one_domain(domains[name]) + if outfp: + outfp.write("\n"+out) + + +def dumps_one_domain(domain): + out = [] + + out.append("D: %s" % domain['domain']) + if 'profiles' in domain: + for profile in domain['profiles']: + out.append("P: %s" % profile) + if 'description' in domain: + for line in domain['description']: + out.append("O: %s" % line) + if 'status' in domain: + out.append("S: %s" % domain['status']) + for role in ("architects", "maintainers", "integrators", "reviewers"): + if role in domain: + for person in domain[role]: + out.append("%s: %s" % (role[0].upper(), person)) + if 'homepage' in domain: + out.append("H: %s" % domain['homepage']) + if 'parent' in domain: + out.append("N: %s" % domain['parent']) + if 'comments' in domain: + for line in domain['comments']: + out.append("C: %s" % line) + return "\n".join(out)+"\n" + +if __name__ == '__main__': + main(sys.argv) +