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

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.