nest-tool

Introduction

The nest-tool egg provides both an extension and a command-line tool to parse and extract information from eggs repository listings.

Author

Mario Domenech Goulart

License

BSD

Requirements

http, tool

Parameters and procedures

'''parameter:''' nest-tool:repository

Path or URL (HTTP) for the repository data file. Default is http://www.call-with-current-continuation.org/eggs/repository.

'''procedure:''' (nest-tool:raw)

Returns the data read from (nest-tool:repository)

'''procedure:''' (nest-tool:egg-name egg)

Returns the egg name from EGG (an item (a list) from (nest-tool:repository)).

'''procedure:''' (nest-tool:egg-date egg)

Returns the release date from EGG (an item (a list) from (nest-tool:repository)).

'''procedure:''' (nest-tool:egg-file egg)

Returns the egg filename from EGG (an item (a list) from (nest-tool:repository)).

'''procedure:''' (nest-tool:egg-dependencies egg)

Returns the list of dependencies from EGG (an item (a list) from (nest-tool:repository)).

'''procedure:''' (nest-tool:names #!optional raw)

Returns a list of eggs names from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

'''procedure:''' (nest-tool:dates #!optional raw)

Returns an alist '((eggname . release-date) ...) from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

'''procedure:''' (nest-tool:files #!optional raw)

Returns an alist '((eggname . filename) ...) from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

'''procedure:''' (nest-tool:dependencies #!optional raw)

Returns a list ''((eggname dep1 dep2 ... depn) ...) from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

'''procedure:''' (nest-tool:search-names pattern #!optional raw)

Searches for PATTERN (a regex object or a string representing a regex) in eggs names from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

'''procedure:''' (nest-tool:search-dependencies pattern #!optional raw)

Searches for PATTERN (a regex object or a string representing a regex) in eggs dependencies lists from (nest-tool:raw). If RAW (a list) is provided, it is used instead of (nest-tool:raw).

Examples

 csi> (nest-tool:search-names "meta.*")
 ((metakit ((date "200610211943")) "metakit.egg") (meta-setup ((date "200706181512")) "meta-setup.egg" tool format-modular http topological-sort) (metaphone ((date "200705190012")) "metaphone.egg" miscmacros misc-extn))
 csi> (nest-tool:dependencies (nest-tool:search-names "meta.*"))
 ((metakit) (meta-setup tool format-modular http topological-sort) (metaphone miscmacros misc-extn))

The eggs which depend on spiffy

 csi> (nest-tool:names (nest-tool:search-dependencies "spiffy"))
 (ajax phoghorn web-scheme spiffy-utils)

The number of eggs in the repository:

 csi> (length (nest-tool:raw))
 303

The command line tool

 $ chicken-nest-tool -h
 usage: chicken-nest-tool [OPTION | ARGUMENT] ...
 
 Provides operations on CHICKEN extensions repository listings
 
 Options:
 
         -h --help       show this message
         -d --omit-date  omit release date
         -D --omit-deps  omit dependencies
         -f --omit-file  omit egg filename
         -s --search ARGUMENT    search eggs names
         -S --search-deps ARGUMENT       search eggs dependencies
         -R --repository ARGUMENT        specify a repository file (HTTP URLs are also accepted)

Examples

Searching for GTK eggs:

 $ chicken-nest-tool.scm "gtk.*"
 gtk2                    200702201349   gtk2.egg                      tinyclos
 gtk2-glade              200704170601   gtk2-glade.egg                gtk2-gobject
 gtk2-gobject            200702201349   gtk2-gobject.egg
 

The same, but omitting the egg filename:

 $ chicken-nest-tool -f -s "gtk.*"
 gtk2                    200702201349   tinyclos
 gtk2-glade              200704170601   gtk2-gobject
 gtk2-gobject            200702201349
 

The same, showing only the egg name and the corresponding dependencies:

 $ chicken-nest-tool -fd -s "gtk.*"
 gtk2                    tinyclos
 gtk2-glade              gtk2-gobject
 gtk2-gobject
 

Searching for eggs which depend on SRFIs that are provided as eggs, omitting the release date and egg filename:

 $ chicken-nest-tool -fd -S "srfi.*"
 SO31                    syntax-case,srfi-42,srfi-4-comprehensions
 args                    srfi-37
 tool                    srfi-37
 remote-launch           openssl,tcp-server,srfi-37,mathh,args,misc-extn,miscmacros,synch,lookup-table,job-worker,osprocess
 html-plots              srfi-40,stream-ext,html-stream
 html-stream             srfi-40,stream-ext,stream-parser
 check                   syntax-case,srfi-42
 stream-base64           srfi-40,stream-ext
 stream-ldif             srfi-40,stream-ext,stream-base64
 stream-wiki             srfi-40,stream-ext,html-stream,stream-parser,sandbox,format-modular,stream-sections
 matcher                 syntax-case,srfi-57
 srfi-4-comprehensions   syntax-case,srfi-42
 stream-htpasswd         srfi-40,stream-ext
 testbase                vector-lib,syntax-case,rlimit,srfi-37,args,testbase-results,testbase-driver
 srfi-19                 numbers,miscmacros,locale,misc-extn,lookup-table,srfi-29
 stream-parser           srfi-40,stream-ext,format-modular
 mat5-lib                testeez,eggdoc,syntax-case,datatype,endian-port,iset,srfi-40,srfi-47,z3
 array-lib               srfi-42,miscmacros,misc-extn
 rgraph                  srfi-40
 stream-cgi              srfi-40,stream-ext,content-type
 stream-ext              srfi-40,format-modular
 stream-sections         srfi-40,stream-ext,stream-parser
 testbase-driver         syntax-case,rlimit,srfi-37,args,testbase,numbers,vector-lib,testbase-results,lookup-table,misc-extn
 stream-flash            srfi-1,srfi-40,stream-ext,utils
 stream-httplog          srfi-40,stream-ext,url
 scheme-dissect          html-stream,srfi-40,stream-ext,stream-wiki,stream-sections,stream-parser,format-modular
 format-modular          srfi-29
 date-literals           srfi-19
 

Version History

1.4
Uses the release 3 repository file.
1.3
Bug fix: doesn't break when a dependency is not a valid egg
1.2
Dependencies graph generation.
1.1
Category change to egg-tools (iraikov)
1.0
initial release