((section 2 "Outdated egg!" (p "This is an egg for CHICKEN 4, the unsupported old release.  You're almost certainly looking for " (int-link "/eggref/5/pseudo-meta-egg-info" "the CHICKEN 5 version of this egg") ", if it exists.") (p "If it does not exist, there may be equivalent functionality provided by another egg; have a look at the " (link "https://wiki.call-cc.org/chicken-projects/egg-index-5.html" "egg index") ". Otherwise, please consider porting this egg to the current version of CHICKEN.") (tags "egg")) (section 2 "Pseudo-meta-egg-info" (section 3 "Description" (p "Serve automatically generated release-info and meta-files via " (int-link "spiffy") " for " (int-link "henrietta-cache") " from Subversion.") (p "See also " (int-link "svn-egg-author") " for another way to simplify release-info and meta-file management with Subversion.  If you are using another VCS, see the " (int-link "/releasing-your-egg" "\"releasing your egg\"") " document.")) (section 3 "Requirements" (ul (li (int-link "spiffy")) (li (int-link "svn-client")) (li (int-link "intarweb")) (li (int-link "uri-common")))) (section 3 "Documentation" (p "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.") (p "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:") (pre "/4\n  /MY-EGG\n    /tags\n      /1.0\n      /1.1\n  /ANOTHER-EGG\n    /tags\n      /0.1\n      /0.2\n      /1.0\n/5\n  /MY-EGG\n    /tags\n      /2.0\n      /2.1\n  /SOME-NEWER-EGG\n    /tags\n      /0.1") (p "You can use it like this (assuming you have " (int-link "spiffy-uri-match") " installed, too):") (highlight scheme "(use spiffy spiffy-uri-match pseudo-meta-egg-info)\n\n;; Trailing slash is mandatory here!\n;; By default this uses the Chicken repo\n(egg-repo \"http://example.com/your-egg-repo/eggs/release/{chicken-release}/\")\n\n(vhost-map `((\".*\" \n              . ,(uri-match/spiffy\n                  `(((/ \"release-info\") (GET ,release-info))\n                    ((/ \"files-list\")   (GET ,files-list)))))))\n(start-server)") (p "This makes the release-info for the CHICKEN 4 version of egg MY-EGG, available under " (tt "http://localhost:8080/release-info?egg=MY-EGG;release=4")) (p "and the files-list for release 1.0 for the CHICKEN 5 version of MY-EGG under " (tt "http://localhost:8080/files-list?egg=MY-EGG;egg-release=1.0;chicken-release=5")) (def (sig (parameter "(egg-repo [URI-STRING])" (id egg-repo))) (p (tt "URI-STRING") " is a string representing the repository URI holding the Subversion files.  The placeholder " (tt "{chicken-release") "} will get replaced with the requested major CHICKEN release.  If none was supplied, \"4\" is assumed.")) (def (sig (procedure "(release-info CONTINUE)" (id release-info))) (p "This serves up the release-info file.  It assumes that " (tt "current-request") " contains a request URI which contains a " (tt "egg-name") " query parameter that indicates the name of the egg, and possibly a " (tt "release") " query parameter that indicates the major release of CHICKEN for which to get the release info.")) (def (sig (procedure "(files-list CONTINUE)" (id files-list))) (p "This serves up the file-list file.  It assumes that " (tt "current-request") " contains a request URI which contains a " (tt "chicken-release") " query parameter that indicates the major CHICKEN version, an " (tt "egg") " query parameter that indicates the name of the egg, and an " (tt "egg-release") " query parameter that indicates the release version of the egg."))) (section 3 "Changelog" (ul (li "1.1 - Port to CHICKEN 5.") (li "1.0 - Add support for multiple major CHICKEN releases.") (li "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") (li "0.1.1 - Improved error messages.") (li "0.1 - Initial release"))) (section 3 "Author" (p (int-link "/users/peter-bex" "Peter Bex"))) (section 3 "Repository" (p (link "http://code.more-magic.net/pseudo-meta-egg-info"))) (section 3 "License" (pre " All code in this egg is explicitly placed in the public domain. You may do whatever you want with it.") (p "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."))))