diff options
Diffstat (limited to 'admin')
-rw-r--r-- | admin/package.xml | 60 | ||||
-rw-r--r-- | admin/packagexml.py | 91 | ||||
-rw-r--r-- | admin/xmlconfig.py | 27 |
3 files changed, 131 insertions, 47 deletions
diff --git a/admin/package.xml b/admin/package.xml index 276566c..7f78305 100644 --- a/admin/package.xml +++ b/admin/package.xml @@ -6,62 +6,28 @@ http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> - <name>OpenID</name> + <name>%(package_name)s</name> <channel>pear.php.net</channel> - <summary>Any one-line summary</summary> + <summary>%(package_summary)s</summary> <description> - An implementation of the OpenID single sign-on authentication protocol. + %(package_description)s </description> - <lead> - <name>Jonathan Daugherty</name> - <user>cygnus</user> - <email>cygnus@janrain.com</email> - <active>yes</active> - </lead> - <lead> - <name>Josh Hoyt</name> - <user>jhoyt</user> - <email>josh@janrain.com</email> - <active>yes</active> - </lead> - <date>2006-01-23</date> + %(leads)s + <date>%(date)s</date> <version> - <release>0.8.1</release> - <api>0.8.1</api> + <release>%(version)s</release> + <api>%(version)s</api> </version> <stability> - <release>beta</release> - <api>beta</api> + <release>%(release_stability)s</release> + <api>%(release_stability)s</api> </stability> - <license uri="http://www.gnu.org/copyleft/lesser.txt">LGPL</license> + <license uri="%(license_uri)s">%(license_name)s</license> <notes> - This release includes SQL store implementations for MySQL, - PostgreSQL, and SQLite. + <!-- Release-specific notes should go here. --> </notes> <contents> - <dir name="/"> - <dir name="Auth"> - <dir name="OpenID"> - <file name="Association.php" role="php" /> - <file name="CryptUtil.php" role="php" /> - <file name="DiffieHellman.php" role="php" /> - <file name="HMACSHA1.php" role="php" /> - <file name="KVForm.php" role="php" /> - <file name="OIDUtil.php" role="php" /> - <dir name="Consumer"> - <file name="Consumer.php" role="php" /> - <file name="Fetchers.php" role="php" /> - <file name="Parse.php" role="php" /> - </dir> - <dir name="Store"> - <file name="DumbStore.php" role="php" /> - <file name="FileStore.php" role="php" /> - <file name="Interface.php" role="php" /> - <file name="SQLStore.php" role="php" /> - </dir> - </dir> - </dir> - </dir> + %(contents)s </contents> <dependencies> <required> @@ -103,4 +69,4 @@ http://pear.php.net/dtd/package-2.0.xsd"> <!-- There really isn't much we should put in the phprelease tag, although we should probably make a windows-specific release tag. --> <phprelease/> -</package>
\ No newline at end of file +</package> diff --git a/admin/packagexml.py b/admin/packagexml.py new file mode 100644 index 0000000..aea0929 --- /dev/null +++ b/admin/packagexml.py @@ -0,0 +1,91 @@ +#!/usr/bin/python + +import os +import os.path + +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): + """ + 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) + lines = ['%s<dir name="%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</dir>' % (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<file name="%s" role="%s" />' % + (INDENT_STRING * depth, os.path.basename(dir_or_file), roles[extension])] + else: + return [] + +def buildContentsXML(roles, *dirs): + lines = ['<dir name="/">'] + + for directory in dirs: + lines.append("\n".join(buildContentsXMLFordir(directory, roles, 1))) + + lines.append('</dir>') + + 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 <package version>" % (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 diff --git a/admin/xmlconfig.py b/admin/xmlconfig.py new file mode 100644 index 0000000..5744a8b --- /dev/null +++ b/admin/xmlconfig.py @@ -0,0 +1,27 @@ + +""" +This is the package.xml data needed for the PHP OpenID PEAR +package.xml file. Use the 'packagexml.py' program to generate a +package.xml file for a release of this library. +""" + +leads = [ + {'name': 'Jonathan Daugherty', + 'user': 'cygnus', + 'email': 'cygnus@janrain.com', + 'active': 'yes'}, + {'name': 'Josh Hoyt', + 'user': 'jhoyt', + 'email': 'josh@janrain.com', + 'active': 'yes'} + ] + +template = 'package.xml' + +package_name = 'OpenID' +package_description = 'An implementation of the OpenID single sign-on authentication protocol.' +package_summary = 'PHP OpenID' +license_name = 'LGPL' +license_uri = 'http://www.gnu.org/copyleft/lesser.txt' +contents_dirs = ['../Auth'] +release_stability = 'stable' |