Add Junfeng as maintainer of Application domain.
[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         'Network & Connectivity',
25         'Platform Development',
26         'SDK',
27         'Security',
28         'Social & Content',
29         'System',
30         'Telephony',
31         'Testing',
32         'Web Framework'
33     ]
34
35
36     roles =  [ 'Architects', 'Maintainers', 'Integrators', 'Reviewers' ]
37     domains = {}
38
39     # connection to gerrit
40     gerrit_url = "https://review.tizen.org/gerrit/"
41     user, _, password = netrc.netrc().hosts[urlparse.urlparse(gerrit_url).netloc]
42     from gerritrest import GerritREST
43     gerrit=GerritREST(gerrit_url, user, password)
44
45     for domain in domains_list:
46         domains[domain] = {
47             'domain': domain,
48             'architects': [],
49             'maintainers': [],
50             'integrators': [],
51             'reviewers': []
52         }
53         for role in roles:
54             group =  '%s - %s' % (domain, role)
55             print group
56             accounts = gerrit.get_group_members(group, recursive=True)
57             for account in accounts:
58                 domains[domain][role.lower()].append(format_account(account))
59
60     with codecs.open("domains.new", "wb", encoding="utf-8") as outfile:
61         dump_all(domains, outfile)
62
63 def format_account(account):
64     out = account.get('name','')
65     if 'email' in account:
66         out += " <%s>" % account['email']
67     return out.strip()
68
69
70 def dump_all(domains, outfp = None):
71     names = sorted(domains.keys())
72     for name in names:
73         out = dumps_one_domain(domains[name])
74         if outfp:
75             outfp.write("\n"+out)
76
77
78 def dumps_one_domain(domain):
79     out = []
80
81     out.append("D: %s" % domain['domain'])
82     if 'profiles' in domain:
83         for profile in domain['profiles']:
84             out.append("P: %s" % profile)
85     if 'description' in domain:
86         for line in domain['description']:
87             out.append("O: %s" % line)
88     if 'status' in domain:
89         out.append("S: %s" % domain['status'])
90     for role in ("architects", "maintainers", "integrators", "reviewers"):
91         if role in domain:
92             for person in domain[role]:
93                 out.append("%s: %s" % (role[0].upper(), person))
94     if 'homepage' in domain:
95         out.append("H: %s" % domain['homepage'])
96     if 'parent' in domain:
97         out.append("N: %s" % domain['parent'])
98     if 'comments' in domain:
99         for line in domain['comments']:
100             out.append("C: %s" % line)
101     return "\n".join(out)+"\n"
102
103 if __name__ == '__main__':
104     main(sys.argv)
105