Pseudo-meta-egg-info
Description
Serve automatically generated release-info and meta-files via spiffy for henrietta-cache from Subversion.
See also svn-egg-author for another way to simplify release-info and meta-file management with Subversion. If you are using another VCS, see the "releasing your egg" document.
Requirements
Documentation
This is a really hacky plugin for spiffy that allows you to serve automatically-generated release-info files and files-list files (the latter of which serves as the files section of a meta-file) for an SVN repository.
It assumes the svn repository location contains a toplevel directory named after the major CHICKEN release, with subdirectories matching the names of eggs. Those egg directories contain a "tags" directory for each revision, with the revision number as its name:
/4 /MY-EGG /tags /1.0 /1.1 /ANOTHER-EGG /tags /0.1 /0.2 /1.0 /5 /MY-EGG /tags /2.0 /2.1 /SOME-NEWER-EGG /tags /0.1
You can use it like this (assuming you have spiffy-uri-match installed, too):
(import spiffy spiffy-uri-match pseudo-meta-egg-info) ;; Trailing slash is mandatory here! ;; By default this uses the Chicken repo (egg-repo "http://example.com/your-egg-repo/eggs/release/4/") (vhost-map `((".*" . ,(uri-match/spiffy `(((/ "release-info") (GET ,release-info)) ((/ "files-list") (GET ,files-list))))))) (start-server)
This makes the release-info for the CHICKEN 4 version of egg MY-EGG, available under http://localhost:8080/release-info?egg=MY-EGG;release=4
and the files-list for release 1.0 for the CHICKEN 5 version of MY-EGG under http://localhost:8080/files-list?egg=MY-EGG;release=1.0;release=5
[parameter] (egg-repo [URI-STRING])URI-STRING is a string representing the repository URI holding the Subversion files. The placeholder {chicken-release} will get replaced with the requested major CHICKEN release. If none was supplied, "4" is assumed.
[procedure] (release-info CONTINUE)This serves up the release-info file. It assumes that current-request contains a request URI which contains a egg-name query parameter that indicates the name of the egg, and possibly a release query parameter that indicates the major release of CHICKEN for which to get the release info.
[procedure] (files-list CONTINUE)This serves up the file-list file. It assumes that current-request contains a request URI which contains a chicken-release query parameter that indicates the major CHICKEN version, an egg query parameter that indicates the name of the egg, and an egg-release query parameter that indicates the release version of the egg.
Changelog
- 1.1 - Port to CHICKEN 5.
- 1.0 - Add support for multiple major CHICKEN releases.
- 0.2 - Add extra validation so that empty egg names/release numbers are caught and a nice 400/404 is returned rather than triggering a hard assertion in libsvn and crashing the entire server. Thanks, Subversion team! :S
- 0.1.1 - Improved error messages.
- 0.1 - Initial release
Author
Repository
http://code.more-magic.net/pseudo-meta-egg-info
License
All code in this egg is explicitly placed in the public domain. You may do whatever you want with it.
This code can be used as a basis for generating any kind of pseudo-meta-egg-info stuff, for example the svn backend could be easily modified to read files from a directory or from any other VCS.