This module provides the standard Nimrod command line parser. It supports one convenience iterator over all command line options and some lower-level features.
Deprecated since version 0.9.3: Use the parseopt2 module instead as this version has issues with spaces in arguments.
Types
TCmdLineKind = enum cmdEnd, ## end of command line reached cmdArgument, ## argument detected cmdLongoption, ## a long option ``--option`` detected cmdShortOption ## a short option ``-c`` detected
- the detected command line token
TOptParser = object of TObject cmd: string pos: int inShortState: bool kind*: TCmdLineKind ## the dected command line token key*, val*: TaintedString ## key and value pair; ``key`` is the option ## or the argument, ``value`` is not "" if ## the option was given a value
- this object implements the command line parser
Procs
proc initOptParser(cmdline = ""): TOptParser {.raises: [EInvalidIndex], tags: [FReadIO].}
- inits the option parser. If cmdline == "", the real command line (as provided by the OS module) is taken.
proc next(p: var TOptParser) {.rtl, extern: "npo$1", raises: [], tags: [].}
- parses the first or next option; p.kind describes what token has been parsed. p.key and p.val are set accordingly.
proc cmdLineRest(p: TOptParser): TaintedString {.rtl, extern: "npo$1", raises: [], tags: [].}
- retrieves the rest of the command line that has not been parsed yet.
Iterators
iterator getopt(): tuple[kind: TCmdLineKind, key, val: TaintedString] {. raises: [EInvalidIndex], tags: [FReadIO].}
-
This is an convenience iterator for iterating over the command line. This uses the TOptParser object. Example:
var filename = "" for kind, key, val in getopt(): case kind of cmdArgument: filename = key of cmdLongOption, cmdShortOption: case key of "help", "h": writeHelp() of "version", "v": writeVersion() of cmdEnd: assert(false) # cannot happen if filename == "": # no filename has been given, so we show the help: writeHelp()