Add EnvFlag util (#378)

This commit is contained in:
Artem Klevtsov
2023-09-17 06:39:43 +07:00
committed by GitHub
parent 074ccd0906
commit 1e6f15faac
+35 -1
View File
@@ -337,6 +337,40 @@ func main() {
}
```
Another example of using hooks is load the env-file:
```go
package main
import (
"fmt"
"github.com/alecthomas/kong"
"github.com/joho/godotenv"
)
type EnvFlag string
// BeforeResolve loads env file.
func (c EnvFlag) BeforeReset(ctx *kong.Context, trace *kong.Path) error {
path := string(ctx.FlagValue(trace.Flag).(EnvFlag)) // nolint
path = kong.ExpandPath(path)
if err := godotenv.Load(path); err != nil {
return err
}
return nil
}
var CLI struct {
EnvFile EnvFlag
Flag `env:"FLAG"`
}
func main() {
_ = kong.Parse(&CLI)
fmt.Println(CLI.Flag)
}
```
## Flags
Any [mapped](#mapper---customising-how-the-command-line-is-mapped-to-go-values) field in the command structure *not* tagged with `cmd` or `arg` will be a flag. Flags are optional by default.
@@ -704,4 +738,4 @@ See the [section on hooks](#hooks-beforeresolve-beforeapply-afterapply-and-the-b
### Other options
The full set of options can be found [here](https://godoc.org/github.com/alecthomas/kong#Option).
The full set of options can be found [here](https://godoc.org/github.com/alecthomas/kong#Option).