optimism
Command line option handling for R7RS Scheme.
Description
This Scheme library provides a way to collect command line options into an association list according to a simple S-expressive grammar. It’s meant to be easy to use and pure-R7RS.
Usage
One procedure is provided, parse-command-line
, which takes as
arguments an options grammar and an optional list of command line option
strings and returns an association list. If no list of options is given,
the program’s command line arguments are used.
(import (foldling optimism))
(parse-command-line
'("-a" "-b" "one" "-c" "two" "three" "-d" "four" "5" "six")
`((-a)
(-b . foo)
(-c bar baz)
(-d ,string->symbol ,string->number)))
; => ((-a)
; (-b . "one")
; (-c "two" "three")
; (-d four 5)
; (-- "six"))
As a special case, an item in the grammar whose first element is a list will be split into separate entries, allowing an abbreviated syntax for multiple option specifications of the same form:
(parse-command-line
'(((--foo --bar --baz) . qux)))
; => (parse-command-line
; '((--foo . qux)
; (--bar . qux)
; (--baz . qux)))
Parsers for getopt(3)
and getopt_long(3)
-style command lines are
provided by the getopt
and getopt-long
sublibraries, respectively.
(import (foldling optimism getopt))
(parse-command-line ; => ((-a)
'("-abcone" "-d" "two") ; (-b)
'((-a) ; (-c . "one")
(-b) ; (-d . "two")
(-c . one) ; (--))
(-d . two)))
(import (foldling optimism getopt-long))
(parse-command-line ; => ((-a . "one")
'("-aone" "--foo" "--bar=two") ; (--foo)
'((-a . one) ; (--bar . "two")
(--foo) ; (--))
(--bar . two)))
Refer to optimism.scm
for more API details.
Installation
To install for CHICKEN Scheme, run chicken-install
from the project’s
root directory.
$ git clone http://git.foldling.org/optimism.git
$ cd optimism
$ chicken-install -test
Other Schemes should install the following files:
src/foldling/optimism.scm
src/foldling/optimism.sld
src/foldling/optimism/getopt.scm
src/foldling/optimism/getopt.sld
src/foldling/optimism/getopt-long.scm
src/foldling/optimism/getopt-long.sld
Author
Evan Hanson evhan@foldling.org
License
This software is written by Evan Hanson and placed in the Public Domain. All warranties are disclaimed.