/
flags.go
34 lines (28 loc) · 898 Bytes
/
flags.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package flags
import (
"time"
flag "github.com/spf13/pflag"
"github.com/spf13/viper"
)
type FlagInfo struct {
Name string
Shorthand string
EnvVar string
Namespace string
Description string
}
func String(f *flag.FlagSet, flagInfo FlagInfo, defaultValue string) {
f.String(flagInfo.Name, defaultValue, flagInfo.Description)
viper.BindEnv(flagInfo.EnvVar)
viper.BindPFlag(flagInfo.EnvVar, f.Lookup(flagInfo.Name))
}
func Int(f *flag.FlagSet, flagInfo FlagInfo, defaultValue int) {
f.Int(flagInfo.Name, defaultValue, flagInfo.Description)
viper.BindEnv(flagInfo.EnvVar)
viper.BindPFlag(flagInfo.EnvVar, f.Lookup(flagInfo.Name))
}
func Duration(f *flag.FlagSet, flagInfo FlagInfo, defaultValue time.Duration) {
f.Duration(flagInfo.Name, defaultValue, flagInfo.Description)
viper.BindEnv(flagInfo.EnvVar)
viper.BindPFlag(flagInfo.EnvVar, f.Lookup(flagInfo.Name))
}