mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-07-28 11:02:20 +00:00
Updated tutorial [ci skip]
This commit is contained in:
148
README.md
148
README.md
@@ -65,7 +65,7 @@ $ lua script.lua
|
|||||||
|
|
||||||
#### Error handling
|
#### Error handling
|
||||||
|
|
||||||
If the provided command line arguments are not recognized by the parser, it will print an error message and calls `os.exit(1)`.
|
If the provided command line arguments are not recognized by the parser, it will print an error message and call `os.exit(1)`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ lua script.lua foo
|
$ lua script.lua foo
|
||||||
@@ -362,7 +362,7 @@ $ lua script.lua install
|
|||||||
install true
|
install true
|
||||||
```
|
```
|
||||||
|
|
||||||
A typo will result in appropriate error message:
|
A typo will result in an appropriate error message:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ lua script.lua instal
|
$ lua script.lua instal
|
||||||
@@ -377,7 +377,7 @@ Did you mean 'install'?
|
|||||||
|
|
||||||
#### Adding elements to commands
|
#### Adding elements to commands
|
||||||
|
|
||||||
The Command class is subclass of the Parser class, so all the Parser's methods for adding elements work on commands, too.
|
The Command class is a subclass of the Parser class, so all the Parser's methods for adding elements work on commands, too.
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local install = parser:command "install"
|
local install = parser:command "install"
|
||||||
@@ -424,10 +424,152 @@ Options:
|
|||||||
|
|
||||||
### Default values
|
### Default values
|
||||||
|
|
||||||
|
For arguments and options, if `default` field is set, its value is used as default argument.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
parser:argument "input"
|
||||||
|
:default "input.txt"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
input input.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
The existence of a default value is reflected in help message.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua --help
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Usage: script.lua [-h] [<input>]
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
input default: input.txt
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message and exit.
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Default values and options
|
||||||
|
|
||||||
|
Note that if an option is not invoked, its default value will not be stored.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
parser:option "-o" "--output"
|
||||||
|
:default "a.out"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua -o
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
output a.out
|
||||||
|
```
|
||||||
|
|
||||||
|
But
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua
|
||||||
|
```
|
||||||
|
|
||||||
|
produces nothing.
|
||||||
|
|
||||||
|
That is because by default options can be not used at all. If default value must be used even when the option is not invoked, make the invocation obligatory.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
parser:option "-o" "--output"
|
||||||
|
:default "a.out"
|
||||||
|
:count(1)
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
output a.out
|
||||||
|
```
|
||||||
|
|
||||||
### Converters
|
### Converters
|
||||||
|
|
||||||
|
argparse can perform automatic validation and conversion on arguments. If `convert` field of an element is a function, it will be applied to all the arguments passed to it. The function should return `nil` and, optionally, an error message if conversion failed. Standard `tonumber` and `io.open` functions work exactly like that.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
parser:argument "input"
|
||||||
|
:convert(io.open)
|
||||||
|
parser:option "-t" "--times"
|
||||||
|
:convert(tonumber)
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua foo.txt -t5
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
input file (0xadress)
|
||||||
|
times 5 (number)
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua nonexistent.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Usage: script.lua [-t <times>] [-h] <input>
|
||||||
|
|
||||||
|
Error: nonexistent.txt: No such file or directory
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua foo.txt --times=many
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Usage: script.lua [-t <times>] [-h] <input>
|
||||||
|
|
||||||
|
Error: malformed argument 'many'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Table converters
|
||||||
|
|
||||||
|
If `convert` field of an element contains a table, arguments passed to it will be used as keys. If a key is missing, an error is raised.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
parser:argument "choice"
|
||||||
|
:convert {
|
||||||
|
foo = "Something foo-related",
|
||||||
|
bar = "Something bar-related"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua bar
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
choice Something bar-related
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ lua script.lua baz
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Usage: script.lua [-h] <choice>
|
||||||
|
|
||||||
|
Error: malformed argument 'baz'
|
||||||
|
```
|
||||||
|
|
||||||
### Actions
|
### Actions
|
||||||
|
|
||||||
|
(Not yet written)
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Documentation is not available in the `doc` directory and [online](http://mpeterv.github.io/argparse). If argparse was installed using luarocks 2.1.2 or later, it can not be viewed using `luarocks doc argparse` command.
|
Documentation is not available in the `doc` directory and [online](http://mpeterv.github.io/argparse). If argparse was installed using luarocks 2.1.2 or later, it can not be viewed using `luarocks doc argparse` command.
|
||||||
|
Reference in New Issue
Block a user