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', encoding='utf-8') 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', encoding='utf-8') as r, open(xmlfilet,'w', encoding='utf-8') 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', encoding='utf-8') 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)