You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@community.apache.org by hb...@apache.org on 2015/05/11 00:48:59 UTC

svn commit: r1678651 - /comdev/projects.apache.org/scripts/import/parsecommittees.py

Author: hboutemy
Date: Sun May 10 22:48:58 2015
New Revision: 1678651

URL: http://svn.apache.org/r1678651
Log:
extract chair from committee-info.txt

Modified:
    comdev/projects.apache.org/scripts/import/parsecommittees.py

Modified: comdev/projects.apache.org/scripts/import/parsecommittees.py
URL: http://svn.apache.org/viewvc/comdev/projects.apache.org/scripts/import/parsecommittees.py?rev=1678651&r1=1678650&r2=1678651&view=diff
==============================================================================
--- comdev/projects.apache.org/scripts/import/parsecommittees.py (original)
+++ comdev/projects.apache.org/scripts/import/parsecommittees.py Sun May 10 22:48:58 2015
@@ -48,10 +48,11 @@ except:
     print("  svn export https://svn.apache.org/repos/private/committers/board/committee-info.txt")
     print("(requires authentication with committer karma)")
     sys.exit(1)
+# extract reporting cycles information
+cycles = { 'Incubator': 0 } # Incubator reports each month
+current = 1
 reports = data[data.index("January, April, July, October"):data.index('Next month')]
 buf = io.StringIO(reports)
-cycles = { 'Incubator': 0 }
-current = 1
 newCycle = True
 for p in buf.readlines():
     if p.startswith('  '):
@@ -61,6 +62,33 @@ for p in buf.readlines():
         if not newCycle:
             newCycle = True
             current += 1
+# extract committees composition
+data = data[data.index('Hint: '):]
+data = data[data.index('* '):]
+buf = io.StringIO(data)
+curCommittee = ''
+committees = {}
+c = {}
+newCommittee = True
+for l in buf.readlines():
+    if l.startswith('* '):
+        curCommittee = l[2:l.index('  (')]
+        newCommittee = True
+        c['members'] = {}
+    elif len(l.strip()) == 0:
+        if newCommittee:
+            committees[curCommittee] = c
+            c = {}
+            newCommittee = False
+    elif not l.startswith('==='):
+        m = re.search(r"(.+?)\s+<([^@]+)@apache.org", l.strip())
+        fullname = m.group(1)
+        uid = m.group(2)
+        isChair = fullname.endswith('(chair)')
+        if isChair:
+            fullname = fullname[0:fullname.index('(')].strip()
+            c['chair'] = uid
+        c['members'][uid] = fullname
 
 tlpCount = 0
 tlps = []
@@ -126,14 +154,15 @@ for pmc in re.findall(r"\* .+?\s+\(est\.
             tlp['committers'] = committers
             if len(pmc) == 0:
                 print('WARN: %s (%s established in %s) has no PMC members LDAP group (id=%s)' % (tlp_id, committee, key, pmcgid))
-            # TODO
-            # tlp['chair'] = uid
+            if project in committees:
+                tlp['chair'] = committees[project]['chair']
             if project in cycles:
                 tlp['reporting'] = cycles[project]
             else:
                 print('WARN: %s not found in reporting cycles' % project)
-            # tlp['charter']
-            # tlp['retired']
+            # TODO
+            # tlp['charter'] source = PMC's DOAP? other?
+            # tlp['retired'] not in committee-info.txt
             tlps.append(tlp)
         else:
             # Special Committee (Officer's, President's or Board)