Add Mobile and SCM domains to known list
[scm/meta/git.git] / scripts / generate-domains.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # vim: ts=4 et sw=4 sts=4 ai sta:
4
5 import sys
6 import json
7 import re
8 import netrc
9 import urlparse
10 import codecs
11
12
13 def main(argv):
14
15     domains_list = [
16         'App Framework',
17         'Applications',
18         'Automotive',
19         'Base',
20         'Graphics & UI Framework',
21         'Location',
22         'Messaging',
23         'Multimedia',
24         'Mobile',
25         'Network & Connectivity',
26         'Platform Development',
27         'SDK',
28         'SCM',
29         'Security',
30         'Social & Content',
31         'System',
32         'Telephony',
33         'Testing',
34         'Web Framework'
35     ]
36
37
38     roles =  [ 'Architects', 'Maintainers', 'Integrators', 'Reviewers' ]
39     domains = {}
40
41     # connection to gerrit
42     gerrit_url = "https://review.tizen.org/gerrit/"
43     user, _, password = netrc.netrc().hosts[urlparse.urlparse(gerrit_url).netloc]
44     from gerritrest import GerritREST
45     gerrit=GerritREST(gerrit_url, user, password)
46
47     for domain in domains_list:
48         domains[domain] = {
49             'domain': domain,
50             'architects': [],
51             'maintainers': [],
52             'integrators': [],
53             'reviewers': []
54         }
55         for role in roles:
56             group =  '%s - %s' % (domain, role)
57             print group
58             accounts = gerrit.get_group_members(group, recursive=True)
59             for account in accounts:
60                 domains[domain][role.lower()].append(format_account(account))
61
62     with codecs.open("domains.new", "wb", encoding="utf-8") as outfile:
63         dump_all(domains, outfile)
64
65 def format_account(account):
66     out = account.get('name','')
67     if 'email' in account:
68         out += " <%s>" % account['email']
69     return out.strip()
70
71
72 def dump_all(domains, outfp = None):
73     names = sorted(domains.keys())
74     for name in names:
75         out = dumps_one_domain(domains[name])
76         if outfp:
77             outfp.write("\n"+out)
78
79
80 def dumps_one_domain(domain):
81     out = []
82
83     out.append("D: %s" % domain['domain'])
84     if 'profiles' in domain:
85         for profile in domain['profiles']:
86             out.append("P: %s" % profile)
87     if 'description' in domain:
88         for line in domain['description']:
89             out.append("O: %s" % line)
90     if 'status' in domain:
91         out.append("S: %s" % domain['status'])
92     for role in ("architects", "maintainers", "integrators", "reviewers"):
93         if role in domain:
94             for person in domain[role]:
95                 out.append("%s: %s" % (role[0].upper(), person))
96     if 'homepage' in domain:
97         out.append("H: %s" % domain['homepage'])
98     if 'parent' in domain:
99         out.append("N: %s" % domain['parent'])
100     if 'comments' in domain:
101         for line in domain['comments']:
102             out.append("C: %s" % line)
103     return "\n".join(out)+"\n"
104
105 if __name__ == '__main__':
106     main(sys.argv)
107