Miscellaneous¶
Argparse version¶
argparse
module is a table with __call
metamethod. argparse.version
is a string in MAJOR.MINOR.PATCH
format specifying argparse version.
Overwriting default help option¶
If the property add_help
of a parser is set to false
, no help option will be added to it. Otherwise, the value of the field will be used to configure it.
1local parser = argparse()
2 :add_help "/?"
$ lua script.lua /?
Usage: script.lua [/?]
Options:
/? Show this help message and exit.
Disabling option handling¶
When handle_options
property of a parser or a command is set to false
, all options will be passed verbatim to the argument list, as if the input included double-hyphens.
1parser:handle_options(false)
2parser:argument "input"
3 :args "*"
4parser:option "-f" "--foo"
5 :args "*"
$ lua script.lua bar -f --foo bar
{
input = {"bar", "-f", "--foo", "bar"}
}
Prohibiting overuse of options¶
By default, if an option is invoked too many times, latest invocations overwrite the data passed earlier.
1parser:option "-o --output"
$ lua script.lua -oFOO -oBAR
{
output = "BAR"
}
Set overwrite
property to false
to prohibit this behavior.
1parser:option "-o --output"
2 :overwrite(false)
$ lua script.lua -oFOO -oBAR
Usage: script.lua [-o <output>] [-h]
Error: option '-o' must be used at most 1 time
Parsing algorithm¶
argparse interprets command line arguments in the following way:
Argument |
Interpretation |
---|---|
|
An argument of an option or a positional argument. |
|
An option. |
|
An option and its argument. The option must be able to take arguments. |
|
An option. |
|
Letters are interpreted as options. If one of them can take an argument, the rest of the string is passed to it. |
|
The rest of the command line arguments will be interpreted as positional arguments. |
Property lists¶
Parser properties¶
Properties that can be set as arguments when calling or constructing a parser, in this order:
Property |
Type |
---|---|
|
String |
|
String |
|
String |
Other properties:
Property |
Type |
---|---|
|
String |
|
String |
|
Boolean |
|
Boolean |
|
Boolean or string or table |
|
String |
|
Number |
|
Number |
|
Number |
|
Number |
|
Number |
|
Number |
Command properties¶
Properties that can be set as arguments when calling or constructing a command, in this order:
Property |
Type |
---|---|
|
String |
|
String |
|
String |
Other properties:
Property |
Type |
---|---|
|
String |
|
String |
|
String |
|
Boolean |
|
Boolean |
|
Function |
|
Boolean or string or table |
|
String |
|
Boolean |
|
Number |
|
Number |
|
Number |
|
Number |
|
Number |
|
Number |
Argument properties¶
Properties that can be set as arguments when calling or constructing an argument, in this order:
Property |
Type |
---|---|
|
String |
|
String |
|
Any |
|
Function or table |
|
Number or string |
Other properties:
Property |
Type |
---|---|
|
String |
|
String |
|
Boolean |
|
String or table |
|
Function or string |
|
Any |
|
Boolean |
Option and flag properties¶
Properties that can be set as arguments when calling or constructing an option or a flag, in this order:
Property |
Type |
---|---|
|
String |
|
String |
|
Any |
|
Function or table |
|
Number or string |
|
Number or string |
Other properties:
Property |
Type |
---|---|
|
String |
|
String |
|
Boolean |
|
Booleans |
|
String or table |
|
Function or string |
|
Any |
|
Boolean |