Script for generating domains file from Gerrit groups
authorAlexander Kanevskiy <kad@linux.intel.com>
Wed, 9 Oct 2013 23:47:10 +0000 (02:47 +0300)
committerAlexander Kanevskiy <kad@linux.intel.com>
Wed, 9 Oct 2013 23:47:10 +0000 (02:47 +0300)
scripts/generate-domains.py [new file with mode: 0755]

diff --git a/scripts/generate-domains.py b/scripts/generate-domains.py
new file mode 100755 (executable)
index 0000000..30fe9f1
--- /dev/null
@@ -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)
+