summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/package.xml60
-rw-r--r--admin/packagexml.py91
-rw-r--r--admin/xmlconfig.py27
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'