Parse the command line given in args (which must be a list of strings) according to the option specification grammar.
The grammar argument is expected to be a list of this form:
) ...) ...)
where each option is a symbol denoting the long option, but without the two leading dashes (e.g.
versionif the option is called
For each option, there may be list of arbitrarily many property/value pairs. The order of the pairs is not important, but every property may only appear once in the property list. The following table lists the possible properties:
-char as a single-character equivalent to
--option. This is how to specify traditional Unix-style flags.
- If bool is true, the option is required.
getopt-longwill raise an error if it is not found in args.
- If bool is
#t, the option accepts a value; if it is
#f, it does not; and if it is the symbol
optional, the option may appear in args with or without a value.
- If the option accepts a value (i.e. you specified
(value #t)for this option), then
getopt-longwill apply func to the value, and throw an exception if it returns
#f. func should be a procedure which accepts a string and returns a boolean value; you may need to use quasiquotes to get it into grammar.
getopt-long's args parameter is expected to be a list of
strings like the one returned by
command-line, with the first
element being the name of the command. Therefore
ignores the first element in args and starts argument
interpretation with the second element.
getopt-long signals an error if any of the following conditions