Next: , Previous: , Up: getopts   [Index]


16.4 Parsing arguments

Function: getopts command-line options argument-action
Function: getopts command-line options argument-action config-options

Parse the Scheme strings in the list command-line as command line arguments, according to the options described by the list options of command-line-option records. If the configuration option delayed is not used, the return value is #f.

argument-action must be a Scheme function accepting a single argument: a Scheme string representing a command line non–option.

The optional config-options must be an enumerated set of values from the getopts-configuration enumeration.

Meaningless usage example:

(import (vicare)
  (vicare getopts)
  (only (vicare language-extensions syntaxes)
        set-cons!))

(define result #f)

(define (register-with opt val)
  (set-cons! result (list (command-line-option-long opt) val)))

(define (register-without opt)
  (set-cons! result (list (command-line-option-long opt))))

(define (register-non-option arg)
  (set-cons! result arg))

(define-command-line-option interactive
  (brief               #\i)
  (long                "interactive")
  (requires-argument   #f)
  (description         "ask the user first")
  (action              register-without))

(define-command-line-option force
  (brief               #\f)
  (long                "force")
  (requires-argument   #f)
  (description         "hurt me plenty")
  (action              register-without))

(define-command-line-option help
  (brief               #\h)
  (long                "help")
  (requires-argument?  #f)
  (description         "print help screen")
  (action              register-without))

(define-command-line-option file
  (brief               #\F)
  (long                "file")
  (requires-argument   #t)
  (description         "input file")
  (action              register-with))

(define-command-line-option archive
  (brief               #\A)
  (long                "archive")
  (requires-argument   #t)
  (description         "output archive")
  (action              register-with))

(getopts (command-line)
         (list interactive force help file archive)
         register-non-option
         (getopts-options ignore-multiple-double-dashes))