Merge pull request #1544 from dearchap/issue_786
Documentation:(issue_786) Add docs for flag validation
This commit is contained in:
commit
7563894fde
@ -596,3 +596,53 @@ The precedence for flag value sources is as follows (highest to lowest):
|
|||||||
0. Environment variable (if specified)
|
0. Environment variable (if specified)
|
||||||
0. Configuration file (if specified)
|
0. Configuration file (if specified)
|
||||||
0. Default defined on the flag
|
0. Default defined on the flag
|
||||||
|
|
||||||
|
#### Flag Actions
|
||||||
|
|
||||||
|
Handlers can be registered per flag which are triggered after a flag has been processed.
|
||||||
|
This can be used for a variety of purposes, one of which is flag validation
|
||||||
|
|
||||||
|
<!-- {
|
||||||
|
"args": ["--port","70000"],
|
||||||
|
"error": "Flag port value 70000 out of range[0-65535]"
|
||||||
|
} -->
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/urfave/cli/v2"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := &cli.App{
|
||||||
|
Flags: []cli.Flag{
|
||||||
|
&cli.IntFlag{
|
||||||
|
Name: "port",
|
||||||
|
Usage: "Use a randomized port",
|
||||||
|
Value: 0,
|
||||||
|
DefaultText: "random",
|
||||||
|
Action: func(ctx *cli.Context, v int) error {
|
||||||
|
if v >= 65536 {
|
||||||
|
return fmt.Errorf("Flag port value %v out of range[0-65535]", v)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := app.Run(os.Args); err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Will result in help output like:
|
||||||
|
|
||||||
|
```
|
||||||
|
Flag port value 70000 out of range[0-65535]
|
||||||
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user