Python script to generate pmc and commiter list
Made a small tool to create pmc and committer list by parsing the JSON
files on projects.apache.org.
This is accessible by anyone and does not require any ASF privileges.
Usage: python makewholist.py
Only dependencies are json, urllib and sys, which should be included by
default on most systems.
diff --git a/makewholist.py b/makewholist.py
new file mode 100644
index 0000000..27e4e56
--- /dev/null
+++ b/makewholist.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""This module can be used to parse and print the PMC and Committer info
+of Apache CloudStack and potentially other ASF projects.
+
+Can be used at command line by running: python makewholist.py"""
+
+import json
+import sys
+import urllib
+
+GROUPS_URL = "https://projects.apache.org/json/foundation/groups.json"
+NAMES_URL = "https://projects.apache.org/json/foundation/people_name.json"
+
+names = {} # Placeholder for names parsed in getNames()
+groups = {} # Placeholder for groups parsed in getCommittersAndPMC()
+
+
+def getCommittersAndPMC():
+ """Get Committer and PMC info from ASF"""
+ global groups
+ try:
+ response = urllib.urlopen(GROUPS_URL)
+ groups = json.loads(response.read())
+ except Exception, ex:
+ print "Error during groups JSON download or parsing: %s" % ex.message
+
+
+def getNames():
+ """ Get committer names info from ASF"""
+ global names
+ try:
+ response = urllib.urlopen(NAMES_URL)
+ names = json.loads(response.read())
+ except Exception, ex:
+ print "Error during names JSON download or parsing: %s" % ex.message
+
+
+def printWhoList():
+ if len(names) == 0 or len(groups) == 0:
+ print "Names or groups not initialized, aborting"
+ sys.exit(1)
+
+ print ("Active Project Management Committee contains "
+ "(in alphabetical order of their usernames):")
+
+ print "| Username | Name |"
+ print "|----------|------|"
+ for pmc in groups['cloudstack-pmc']:
+ print "|%s|%s|" % (pmc, names[pmc])
+ print ""
+ print ""
+ print ("Active list of committers "
+ "(in alphabetical order of their usernames):")
+ print "| Username | Name |"
+ print "|----------|------|"
+ for committer in groups['cloudstack']:
+ print "|%s|%s|" % (committer, names[committer])
+
+
+if __name__ == "__main__":
+ getNames()
+ getCommittersAndPMC()
+ printWhoList()