PHP Classes

File: web/SSO/vendor/openid/php-openid/admin/packagexml.py

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/vendor/openid/php-openid/admin/packagexml.py   Download  
File: web/SSO/vendor/openid/php-openid/admin/packagexml.py
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 4,603 bytes
 

Contents

Class file image Download
#!/usr/bin/python import os import os.path def makeMaintainerXML(leads): maintainer_template = """ <maintainer> <user>%(user)s</user> <name>%(name)s</name> <email>%(email)s</email> <role>lead</role> </maintainer> """ return "<maintainers>" + \ "".join([maintainer_template % l for l in leads]) + \ "</maintainers>" def makeLeadXML(leads): lead_template = """ <lead> <name>%(name)s</name> <user>%(user)s</user> <email>%(email)s</email> <active>%(active)s</active> </lead> """ return "".join([lead_template % l for l in leads]) INDENT_STRING = " " def buildContentsXMLFordir(dir_or_file, roles, depth=0, dir_role=None, all_files=False): """ Returns a list of strings, each of which is either a <file> XML element for the given file or a <dir> element which contains other <file> elements. """ try: entries = os.listdir(dir_or_file) dir_role_s = '' if dir_role: dir_role_s = ' role="%s"' % (dir_role) lines = ['%s<dir name="%s"%s>' % (INDENT_STRING * depth, os.path.basename(dir_or_file), dir_role_s)] for entry in entries: lines += buildContentsXMLFordir(dir_or_file + os.sep + entry, roles, depth + 1, dir_role, all_files) lines.append('%s</dir>' % (INDENT_STRING * depth)) return lines except OSError: try: extension = dir_or_file.split(".")[-1] except: if not all_files: return [] if all_files and dir_role: return ['%s<file name="%s" role="%s" />' % (INDENT_STRING * depth, os.path.basename(dir_or_file), dir_role)] elif extension in roles: # Ends in an extension we care about return ['%s<file name="%s" role="%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))) return "\n".join(lines) def buildDocsXML(*dirs): lines = [] for directory in dirs: lines.append("\n".join(buildContentsXMLFordir(directory, {}, 1, 'doc', all_files=True))) return "\n".join(lines) if __name__ == "__main__": def usage(progname): print "Usage: %s <package version> <xml template file> <release notes file>" % (progname) import sys import time try: import xmlconfig except: print "Could not import XML configuration module xmlconfig" sys.exit(1) # Expect sys.argv[2] to be the name of the XML file template to # use for processing. try: template_f = open(sys.argv[2], 'r') except Exception, e: usage(sys.argv[0]) 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: usage(sys.argv[0]) sys.exit(2) # Expect sys.argv[3] to be the name of the release notes file. try: release_file = sys.argv[3] release_file_h = open(release_file, 'r') release_notes = release_file_h.read().strip() release_file_h.close() except Exception, e: usage(sys.argv[0]) print str(e) sys.exit(3) data = xmlconfig.__dict__.copy() contentsXml = buildContentsXML({'php': 'php'}, *xmlconfig.contents_dirs) docsXml = buildDocsXML(*xmlconfig.docs_dirs) contents = '<dir name="/">\n' + contentsXml + \ "\n" + docsXml + '\n </dir>' contents_v1 = '<filelist><dir name="/" baseinstalldir="Auth">\n' + contentsXml + \ "\n" + docsXml + '\n </dir></filelist>' data['contents'] = contents data['contents_version_1'] = contents_v1 data['leads'] = makeLeadXML(xmlconfig.leads) data['maintainers'] = makeMaintainerXML(xmlconfig.leads) data['date'] = time.strftime("%Y-%m-%d") data['version'] = version data['uri'] = "%s%s-%s.tgz" % (data['package_base_uri'], data['package_name'], version) data['release_notes'] = release_notes template_data = template_f.read() print template_data % data