Merge pull request #1544 from dearchap/issue_786

Documentation:(issue_786) Add docs for flag validation
main
dearchap 2 years ago committed by GitHub
commit 7563894fde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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": ["&#45;&#45;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…
Cancel
Save