+++ /dev/null
-#!/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',
- 'Mobile',
- 'Network & Connectivity',
- 'Platform Development',
- 'SDK',
- 'SCM',
- '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)
-
+++ /dev/null
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# vim: ts=4 et sw=4 sts=4 ai sta:
-
-import sys
-import json
-import re
-import codecs
-
-
-def main(argv):
-
- if len(argv) < 2:
- raise SystemExit("Usage: %s <projects.json>" % argv[0])
-
- # TODO: read from domains file
- domains = [
- 'App Framework',
- 'Applications',
- 'Automotive',
- 'Base',
- 'Graphics & UI Framework',
- 'Location',
- 'Messaging',
- 'Multimedia',
- 'Network & Connectivity',
- 'Platform Development',
- 'SDK',
- 'Security',
- 'Social & Content',
- 'System',
- 'Telephony',
- 'Testing',
- 'Web Framework'
- ]
-
- # Interesting for us branches.
- # TODO: read from branches file
- branches = [
- 'tizen', 'tizen_2.2', 'tizen_2.1', 'tizen_2.0'
- ]
-
- # Mappings between domain names and ACLs
- domain_to_acl = {}
- acl_to_domain = {}
-
- # Populate mappings
- for domain in domains:
- domain_converted = "scm/acls/domain_"+domain.replace("&","and").replace(" ","_").lower()
- domain_to_acl[domain] = domain_converted
- acl_to_domain[domain_converted] = domain
-
- projects = json.load(open(argv[1],"r"))
-
- git_names = sorted(projects.keys())
-
- out_projects = {}
-
- # Gather data
- for name in git_names:
- if 'parent' not in projects[name]:
- # Top-level git tree
- continue
- if name.startswith("scm/"):
- # special hierarchy
- continue
- out_projects[name] = {
- 'maintainers': [],
- 'integrators': [],
- 'reviewers': [],
- 'licenses': [],
- 'comments': [],
- 'path': name
- }
- if projects[name]['parent'] in acl_to_domain:
- out_projects[name]['domain'] = acl_to_domain[projects[name]['parent']]
- else:
- out_projects[name]['domain'] = ''
- out_projects[name]['comments'].append('Missing domain!')
- if 'description' in projects[name] and projects[name]['description']:
- for line in re.split(r";[\n ]", projects[name]['description']):
- if not line:
- continue
- if line[-1] == ';':
- line = line[:-1]
- tup = line.split(": ", 1)
- if len(tup) != 2:
- # Not well known line
- continue
- if tup[0] == 'Domain':
- # Let's check if domain matches with ACLs
- if out_projects[name]['domain'] != tup[1]:
- out_projects[name]['description_domain'] = tup[1]
- emes="Domain mismatch: '%s' vs. '%s'" % \
- (out_projects[name]['domain'], tup[1])
- out_projects[name]['comments'].append(emes)
- else:
- out_projects[name][tup[0].lower()] = re.split(r", ?", tup[1])
- if 'branches' in projects[name]:
- # TODO: Add information about branches
- interesting = False
- out_projects[name]['branches'] = { branch: False for branch in branches }
- for branch in branches:
- if branch in projects[name]['branches']:
- out_projects[name]['branches'][branch] = True
- interesting = True
- else:
- out_projects[name]['branches'][branch] = False
- if not interesting:
- # Project doesn't have any of interesting for us branches
- del out_projects[name]
-
-
- with codecs.open("git-trees.new", "wb", encoding="utf-8") as outfile:
- dump_all(out_projects, outfile)
-
-
-def dump_all(git_trees, outfp = None):
- names = sorted(git_trees.keys())
- for name in names:
- out = dumps_one_project(git_trees[name])
- if outfp:
- outfp.write("\n"+out)
-
-
-def dumps_one_project(git_dict):
- out = []
-
- #out.append("")
- out.append("T: %s" % git_dict['path'])
- out.append("D: %s" % git_dict['domain'])
- if 'description' in git_dict:
- for line in git_dict['description']:
- out.append("O: %s" % line)
- if 'profiles' in git_dict:
- for profile in git_dict['profiles']:
- out.append("P: %s" % profile)
- if 'status' in git_dict:
- out.append("S: %s" % git_dict['status'])
- for role in ("maintainers", "integrators", "reviewers"):
- if role in git_dict:
- for person in git_dict[role]:
- out.append("%s: %s" % (role[0].upper(), person))
- if 'branches' in git_dict:
- for branch in git_dict['branches']:
- if git_dict['branches'][branch]:
- out.append("B: %s" % branch)
- if 'licenses' in git_dict:
- for license in git_dict['licenses']:
- out.append("L: %s" % license)
- if 'homepage' in git_dict:
- out.append("H: %s" % git_dict['homepage'])
- if 'upstream url' in git_dict:
- out.append("U: %s" % git_dict['upstream url'])
- if 'upstream vcs' in git_dict:
- out.append("V: %s" % git_dict['upstream vcs'])
- if 'comments' in git_dict:
- for line in git_dict['comments']:
- out.append("C: %s" % line)
- return "\n".join(out)+"\n"
-
-
-if __name__ == '__main__':
- main(sys.argv)
-