[Checkins] SVN: zope.z2release/trunk/ Added support for creating a Zope Toolkit index.
Hanno Schlichting
hannosch at hannosch.eu
Sat Jun 26 07:26:06 EDT 2010
Log message for revision 113886:
Added support for creating a Zope Toolkit index.
Changed:
U zope.z2release/trunk/CHANGES.txt
U zope.z2release/trunk/README.txt
U zope.z2release/trunk/setup.py
U zope.z2release/trunk/zope/z2release/cli.py
A zope.z2release/trunk/zope/z2release/utils.py
A zope.z2release/trunk/zope/z2release/ztk.py
-=-
Modified: zope.z2release/trunk/CHANGES.txt
===================================================================
--- zope.z2release/trunk/CHANGES.txt 2010-06-26 11:23:14 UTC (rev 113885)
+++ zope.z2release/trunk/CHANGES.txt 2010-06-26 11:26:06 UTC (rev 113886)
@@ -4,6 +4,8 @@
0.4 - unreleased
----------------
+- Added support for creating a Zope Toolkit index.
+
- Update ``package_urls`` to ``release_urls`` as specified in
http://wiki.python.org/moin/PyPiXmlRpc.
Modified: zope.z2release/trunk/README.txt
===================================================================
--- zope.z2release/trunk/README.txt 2010-06-26 11:23:14 UTC (rev 113885)
+++ zope.z2release/trunk/README.txt 2010-06-26 11:26:06 UTC (rev 113886)
@@ -2,13 +2,15 @@
============
``zope.z2releases`` is used to generated a PyPI compatible index with
-references to all pinned package versions based on the ``versions.cfg``
-configuration of the Zope 2 package.
+references to all pinned package versions based on a ``versions.cfg``.
+It can handle both a Zope 2 release as well as a Zope Toolkit release.
+
Usage
=====
To generate an index, use::
- z2_kgs tags/2.12.1 /srv/index/2.12.1
- z2_kgs branches/2.12 /srv/index/2.12
+ z2_kgs tags/2.12.1 /srv/Zope2/index/2.12.1
+
+ ztk_kgs tags/1.0a1 /srv/zopetoolkit/index/1.0a1
Modified: zope.z2release/trunk/setup.py
===================================================================
--- zope.z2release/trunk/setup.py 2010-06-26 11:23:14 UTC (rev 113885)
+++ zope.z2release/trunk/setup.py 2010-06-26 11:26:06 UTC (rev 113886)
@@ -4,15 +4,15 @@
setup(name='zope.z2release',
version=version,
- description="Zope 2 release helper",
+ description="Zope release helper",
long_description=open("README.txt").read() + "\n" +
open("CHANGES.txt").read(),
classifiers=[
"Programming Language :: Python",
],
keywords='',
- author='Andreas Jung',
- author_email='info at zopyx.com',
+ author='Zope Foundation',
+ author_email='zope-dev at zope.org',
url='http://pypi.python.org/pypi/zope.z2release',
license='ZPL',
packages=find_packages(exclude=['ez_setup']),
@@ -23,6 +23,7 @@
'setuptools',
],
entry_points=dict(console_scripts=[
- 'z2_kgs=zope.z2release.cli:main'
+ 'z2_kgs=zope.z2release.cli:main',
+ 'ztk_kgs=zope.z2release.ztk:main'
]),
)
Modified: zope.z2release/trunk/zope/z2release/cli.py
===================================================================
--- zope.z2release/trunk/zope/z2release/cli.py 2010-06-26 11:23:14 UTC (rev 113885)
+++ zope.z2release/trunk/zope/z2release/cli.py 2010-06-26 11:26:06 UTC (rev 113886)
@@ -12,55 +12,14 @@
import os
import sys
-import urlparse
import urllib
from xmlrpclib import Server
-from ConfigParser import RawConfigParser as ConfigParser
+from zope.z2release.utils import CasePreservingConfigParser
+from zope.z2release.utils import write_index
-server = None
-
-class CasePreservingConfigParser(ConfigParser):
-
- def optionxform(self, option):
- return option # don't flatten case!
-
-
-def write_index(package, version, dirname):
- print >>sys.stderr, 'Package %s==%s' % (package, version)
- dest_dir = os.path.join(dirname, package)
- if not os.path.exists(dest_dir):
- os.makedirs(dest_dir)
- index_html = os.path.join(dest_dir, 'index.html')
-
- fp = file(index_html, 'w')
- print >>fp, '<html><body>'
- lst = server.release_urls(package, version)
- if lst:
- # package hosted on PyPI
- for d in lst:
- link = '<a href="%s">%s</a>' % (d['url'], d['filename'])
- print >>fp, link
- print >>fp, '<br/>'
- else:
- # for externally hosted packages we need to rely on the
- # download_url metadata
- rel_data = server.release_data(package, version)
- download_url = rel_data['download_url']
- if download_url == 'UNKNOWN':
- raise RuntimeError('Incorrect download_url for package %s' % package)
- filename = os.path.basename(urlparse.urlparse(download_url)[2])
- link = '<a href="%s">%s</a>' % (download_url, filename)
- print >>fp, link
-
- print >>fp, '</body></html>'
- fp.close()
-
-
def main():
- global server
-
if len(sys.argv) != 3:
print 'Usage: z2_kgs <tag-name> <destination-dirname>'
print 'Example: z2_kgs tags/2.12.1 /var/www/download.zope.org/Zope2/index/2.12.1/'
@@ -84,12 +43,12 @@
server = Server('http://pypi.python.org/pypi')
- write_index('Zope2', version, dirname)
+ write_index(server, 'Zope2', version, dirname)
for package in CP.options('versions'):
version = CP.get('versions', package)
if '#' in version:
version = version.split('#')[0].strip()
- write_index(package, version, dirname)
+ write_index(server, package, version, dirname)
if __name__ == '__main__':
main()
Added: zope.z2release/trunk/zope/z2release/utils.py
===================================================================
--- zope.z2release/trunk/zope/z2release/utils.py (rev 0)
+++ zope.z2release/trunk/zope/z2release/utils.py 2010-06-26 11:26:06 UTC (rev 113886)
@@ -0,0 +1,42 @@
+import os
+import sys
+import urlparse
+
+from ConfigParser import RawConfigParser as ConfigParser
+
+
+class CasePreservingConfigParser(ConfigParser):
+
+ def optionxform(self, option):
+ return option # don't flatten case!
+
+
+def write_index(server, package, version, dirname):
+ print >>sys.stderr, 'Package %s==%s' % (package, version)
+ dest_dir = os.path.join(dirname, package)
+ if not os.path.exists(dest_dir):
+ os.makedirs(dest_dir)
+ index_html = os.path.join(dest_dir, 'index.html')
+
+ fp = file(index_html, 'w')
+ print >>fp, '<html><body>'
+ lst = server.release_urls(package, version)
+ if lst:
+ # package hosted on PyPI
+ for d in lst:
+ link = '<a href="%s">%s</a>' % (d['url'], d['filename'])
+ print >>fp, link
+ print >>fp, '<br/>'
+ else:
+ # for externally hosted packages we need to rely on the
+ # download_url metadata
+ rel_data = server.release_data(package, version)
+ download_url = rel_data['download_url']
+ if download_url == 'UNKNOWN':
+ raise RuntimeError('Incorrect download_url for package %s' % package)
+ filename = os.path.basename(urlparse.urlparse(download_url)[2])
+ link = '<a href="%s">%s</a>' % (download_url, filename)
+ print >>fp, link
+
+ print >>fp, '</body></html>'
+ fp.close()
Property changes on: zope.z2release/trunk/zope/z2release/utils.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: zope.z2release/trunk/zope/z2release/ztk.py
===================================================================
--- zope.z2release/trunk/zope/z2release/ztk.py (rev 0)
+++ zope.z2release/trunk/zope/z2release/ztk.py 2010-06-26 11:26:06 UTC (rev 113886)
@@ -0,0 +1,58 @@
+"""
+Generate an index file based on the ztk-versions.cfg file of the Zope Toolkit
+in order to provide a version specific index page generated to be used
+in combination with easy_install -i <some_url>
+
+Usage:
+
+cli.py tags/1.0a1 /tmp/index/1.0a1
+cli.py branches/1.0 /tmp/index/1.0
+"""
+
+import os
+import sys
+import urllib
+from xmlrpclib import Server
+
+from zope.z2release.utils import CasePreservingConfigParser
+from zope.z2release.utils import write_index
+
+
+def main():
+ if len(sys.argv) != 3:
+ print 'Usage: ztk_kgs <tag-name> <destination-dirname>'
+ print 'Example: ztk_kgs tags/1.0a1 /var/www/download.zope.org/zopetoolkit/index/1.0a1/'
+ sys.exit(1)
+
+ tag = sys.argv[1]
+ dirname = sys.argv[2]
+ if not os.path.exists(dirname):
+ print >>sys.stderr, 'Creating index directory: %s' % dirname
+ os.makedirs(dirname)
+
+ version = tag.split('/')[-1]
+ versions_url = 'http://svn.zope.org/*checkout*/zopetoolkit/%s/ztk-versions.cfg' % tag
+ print >>sys.stderr, 'Fetching %s' % versions_url
+ data = urllib.urlopen(versions_url).read()
+ version_file = os.path.join(dirname, 'ztk-versions.cfg')
+ file(version_file, 'w').write(data)
+
+ app_versions_url = 'http://svn.zope.org/*checkout*/zopetoolkit/%s/zopeapp-versions.cfg' % tag
+ print >>sys.stderr, 'Fetching %s' % app_versions_url
+ data = urllib.urlopen(app_versions_url).read()
+ app_version_file = os.path.join(dirname, 'zopeapp-versions.cfg')
+ file(app_version_file, 'w').write(data)
+
+ CP = CasePreservingConfigParser()
+ CP.read(version_file)
+
+ server = Server('http://pypi.python.org/pypi')
+
+ for package in CP.options('versions'):
+ version = CP.get('versions', package)
+ if '#' in version:
+ version = version.split('#')[0].strip()
+ write_index(server, package, version, dirname)
+
+if __name__ == '__main__':
+ main()
Property changes on: zope.z2release/trunk/zope/z2release/ztk.py
___________________________________________________________________
Added: svn:eol-style
+ native
More information about the checkins
mailing list