Default values

For elements such as arguments and options, if default property is set, its value is stored in case the element was not used.

1
2
3
4
5
parser:option("-o --output", "Output file.", "a.out")
-- Equivalent:
parser:option "-o" "--output"
   :description "Output file."
   :default "a.out"
$ lua script.lua
{
   output = "a.out"
}

The existence of a default value is reflected in help message, unless show_default property is set to false.

$ lua script.lua --help
Usage: script.lua [-o <output>] [-h]

Options:
   -o <output>, --output <output>
                         Output file. (default: a.out)
   -h, --help            Show this help message and exit.

Note that invocation without required arguments is still an error.

$ lua script.lua -o
Usage: script.lua [-o <output>] [-h]

Error: too few arguments

Default mode

defmode property regulates how argparse should use the default value of an element.

If defmode contains u (for unused), the default value will be automatically passed to the element if it was not invoked at all. This is the default behavior.

If defmode contains a (for argument), the default value will be automatically passed to the element if not enough arguments were passed, or not enough invocations were made.

Consider the difference:

1
2
3
4
5
parser:option "-o"
   :default "a.out"
parser:option "-p"
   :default "password"
   :defmode "arg"
$ lua script.lua -h
Usage: script.lua [-o <o>] [-p [<p>]] [-h]

Options:
   -o <o>                default: a.out
   -p [<p>]              default: password
   -h, --help            Show this help message and exit.
$ lua script.lua
{
   o = "a.out"
}
$ lua script.lua -p
{
   o = "a.out",
   p = "password"
}
$ lua script.lua -o
Usage: script.lua [-o <o>] [-p [<p>]] [-h]

Error: too few arguments