DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(guile.info.gz) getopt-long Example

Info Catalog (guile.info.gz) getopt-long (guile.info.gz) Option Specification
 
 10.2.1 A Short getopt-long Example
 ----------------------------------
 
 This subsection 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)))))
 
Info Catalog (guile.info.gz) getopt-long (guile.info.gz) Option Specification
automatically generated byinfo2html