#!/usr/bin/python
import os
import os.path
def makeLeadXML(leads):
lead_template = """
%(name)s
%(user)s
%(email)s
%(active)s
"""
return "".join([lead_template % l for l in leads])
INDENT_STRING = " "
def buildContentsXMLFordir(dir_or_file, roles, depth=0):
"""
Returns a list of strings, each of which is either a XML
element for the given file or a element which contains other
elements.
"""
try:
entries = os.listdir(dir_or_file)
lines = ['%s' % (INDENT_STRING * depth, os.path.basename(dir_or_file))]
for entry in entries:
lines += buildContentsXMLFordir(dir_or_file + os.sep + entry, roles, depth + 1)
lines.append('%s' % (INDENT_STRING * depth))
return lines
except OSError:
try:
extension = dir_or_file.split(".")[-1]
except:
return []
if extension in roles: # Ends in an extension we care about
return ['%s' %
(INDENT_STRING * depth, os.path.basename(dir_or_file), roles[extension])]
else:
return []
def buildContentsXML(roles, *dirs):
lines = ['']
for directory in dirs:
lines.append("\n".join(buildContentsXMLFordir(directory, roles, 1)))
lines.append('')
return "\n".join(lines)
if __name__ == "__main__":
import sys
import time
try:
import xmlconfig
except:
print "Could not import XML configuration module xmlconfig"
sys.exit(1)
try:
template_f = open(xmlconfig.template, 'r')
except Exception, e:
print "Could not open template file:", str(e)
sys.exit(1)
# Expect sys.argv[1] to be the version number to include in the
# package.xml file.
try:
version = sys.argv[1]
except:
print "Usage: %s " % (sys.argv[0])
sys.exit(2)
data = xmlconfig.__dict__.copy()
data['contents'] = buildContentsXML({'php': 'php'}, *xmlconfig.contents_dirs)
data['leads'] = makeLeadXML(xmlconfig.leads)
data['date'] = time.strftime("%Y-%m-%d")
data['version'] = version
template_data = template_f.read()
print template_data % data