You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/spf13/pflag"
|
|
"github.com/spf13/viper"
|
|
"time"
|
|
)
|
|
|
|
type optBuilder struct {
|
|
Flags *pflag.FlagSet
|
|
Hide bool
|
|
}
|
|
|
|
func OptBuilder(flags *pflag.FlagSet) *optBuilder {
|
|
return &optBuilder{
|
|
Flags: flags,
|
|
}
|
|
}
|
|
|
|
func (ob *optBuilder) register(key string, env string) {
|
|
_ = viper.BindEnv(key, env)
|
|
if ob.Hide {
|
|
_ = ob.Flags.MarkHidden(key)
|
|
}
|
|
}
|
|
|
|
func (ob *optBuilder) StringP(key stringConfKey, short string, defaultValue string, usage string, env string) {
|
|
ob.Flags.StringP(string(key), short, defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func (ob *optBuilder) BoolP(key boolConfKey, short string, defaultValue bool, usage string, env string) {
|
|
ob.Flags.BoolP(string(key), short, defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func (ob *optBuilder) IntP(key intConfKey, short string, defaultValue int, usage string, env string) {
|
|
ob.Flags.IntP(string(key), short, defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func (ob *optBuilder) DurationP(key durationConfKey, short string, defaultValue time.Duration, usage string, env string) {
|
|
ob.Flags.DurationP(string(key), short, defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func (ob *optBuilder) String(key stringConfKey, defaultValue string, usage string, env string) {
|
|
ob.StringP(key, "", defaultValue, usage, env)
|
|
}
|
|
|
|
func (ob *optBuilder) Bool(key boolConfKey, defaultValue bool, usage string, env string) {
|
|
ob.BoolP(key, "", defaultValue, usage, env)
|
|
}
|
|
|
|
func (ob *optBuilder) Int(key intConfKey, defaultValue int, usage string, env string) {
|
|
ob.IntP(key, "", defaultValue, usage, env)
|
|
}
|
|
|
|
func (ob *optBuilder) StringArray(key sliceConfKey, defaultValue []string, usage string, env string) {
|
|
ob.Flags.StringArray(string(key), defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func (ob *optBuilder) StringSliceP(key sliceConfKey, short string, defaultValue []string, usage string, env string) {
|
|
ob.Flags.StringSliceP(string(key), short, defaultValue, usage)
|
|
ob.register(string(key), env)
|
|
}
|
|
|
|
func GetString(key stringConfKey) string {
|
|
return viper.GetString(string(key))
|
|
}
|
|
|
|
func GetBool(key boolConfKey) bool {
|
|
return viper.GetBool(string(key))
|
|
}
|
|
|
|
func GetInt(key intConfKey) int {
|
|
return viper.GetInt(string(key))
|
|
}
|
|
|
|
func GetDuration(key durationConfKey) time.Duration {
|
|
return viper.GetDuration(string(key))
|
|
}
|
|
|
|
func GetSlice(key sliceConfKey) []string {
|
|
return viper.GetStringSlice(string(key))
|
|
}
|