scripts/newtlp.py (79 lines of code) (raw):
#!/usr/bin/env python3
"""
Creates the initial RDF for a new TLP
Reads:
data/committees/_template.rdf
committee-info.json from Whimsy
Updates:
data/committees.xml
Creates:
data/committees/<pmc>.rdf
"""
import sys
import os.path
import os
from string import Template
import re
if len(sys.argv) == 1:
print("Please provide a list of project ids")
sys.exit(1)
# This currently reads data at load time
import committee_info
# extract committees composition
print("Reading committee-info")
committees = committee_info.committees()
DATADIR = os.path.join(committee_info.COMDEV_HOME,'data')
RDFDIR = os.path.join(DATADIR,'committees')
RETIREDDIR = os.path.join(DATADIR,'committees-retired')
OVERRIDEDIR = os.path.join(DATADIR,'projects-override')
print("Reading _template.rdf")
tmpfile = os.path.join(RDFDIR,'_template.rdf')
with open(tmpfile,'r') as t:
template = Template(t.read())
def update_xml(pid):
xmlfile = os.path.join(DATADIR,'committees.xml')
xmlfilet = os.path.join(DATADIR,'committees.xml.t')
print("Updating committees.xml")
notYetFound = True
with open(xmlfile,'r') as r, open(xmlfilet,'w') as w:
for l in r:
if notYetFound:
m = re.search("^(\\s+)<location>committees/(.+)\\.rdf<",l)
if m:
indent = m.group(1)
mid = m.group(2)
if mid > pid: # found insertion point
w.write("%s<location>committees/%s.rdf</location>\n" % (indent, pid))
notYetFound = False
elif mid == pid:
print("ERROR: committees.xml already contains %s" % pid)
w.close()
os.remove(xmlfilet)
return
else:
if l.startswith("</list"): # EOF
w.write("%s<location>committees/%s.rdf</location>\n" % (indent, pid))
notYetFound = False
w.write(l) # write the original line
os.rename(xmlfilet,xmlfile)
for arg in sys.argv[1:]:
print("Processing "+arg)
outfile = os.path.join(RDFDIR,"%s.%s"%(arg,'rdf'))
if os.path.exists(outfile):
print("RDF file for %s already exists!" % arg)
continue
oldrdf = os.path.join(RETIREDDIR,"%s.%s"%(arg,'rdf'))
if os.path.exists(oldrdf):
print("%s exists - sorry cannot handle exit from Attic" % oldrdf)
continue
oldrdf = os.path.join(OVERRIDEDIR,"%s.%s"%(arg,'rdf'))
if os.path.exists(oldrdf):
print("%s exists - sorry cannot handle exit from Attic" % oldrdf)
continue
try:
cttee = committees[arg]
if cttee['description']:
data = {
"id": arg,
"site": cttee['site'],
"fullname": cttee['fullname'],
"description": cttee['description'],
}
out = template.substitute(data)
print("Creating "+outfile)
with open(outfile,'w') as o:
o.write(out)
os.system("svn add %s" % outfile)
update_xml(arg)
else:
print("No description found for "+arg)
except KeyError:
print("Cannot find "+arg)
os.system("svn diff %s" % DATADIR)