You are looking at historical revision 39572 of this page. It may differ significantly from its current revision.

Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.

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):

(use 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

Author

Peter Bex

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.