This section illustrates how getopt-long
is used by presenting
and dissecting a simple example. The first thing that we need is an
option specification that tells getopt-long
how to parse
the command line. This specification is an association list with the
long option name as the key. Here is how such a specification might
look:
(define option-spec '((version (single-char #\v) (value #f)) (help (single-char #\h) (value #f))))
This alist tells getopt-long
that it should accept two long
options, called version and help, and that these options
can also be selected by the single-letter abbreviations v and
h, respectively. The (value #f)
clauses indicate that
neither of the options accepts a value.
With this specification we can use getopt-long
to parse a given
command line:
(define options (getopt-long (command-line) option-spec))
After this call, options
contains the parsed command line and is
ready to be examined by option-ref
. option-ref
is called
like this:
(option-ref options 'help #f)
It expects the parsed command line, a symbol indicating the option to
examine, and a default value. The default value is returned if the
option was not present in the command line, or if the option was present
but without a value; otherwise the value from the command line is
returned. Usually option-ref
is called once for each possible
option that a script supports.
The following example shows a main program which puts all this together to parse its command line and figure out what the user wanted.
(define (main args) (let* ((option-spec '((version (single-char #\v) (value #f)) (help (single-char #\h) (value #f)))) (options (getopt-long args option-spec)) (help-wanted (option-ref options 'help #f)) (version-wanted (option-ref options 'version #f))) (if (or version-wanted help-wanted) (begin (if version-wanted (display "getopt-long-example version 0.3\n")) (if help-wanted (display "\ getopt-long-example [options] -v, --version Display version -h, --help Display this help "))) (begin (display "Hello, World!") (newline)))))