| package viper |
| |
| import "github.com/spf13/pflag" |
| |
| // FlagValueSet is an interface that users can implement |
| // to bind a set of flags to viper. |
| type FlagValueSet interface { |
| VisitAll(fn func(FlagValue)) |
| } |
| |
| // FlagValue is an interface that users can implement |
| // to bind different flags to viper. |
| type FlagValue interface { |
| HasChanged() bool |
| Name() string |
| ValueString() string |
| ValueType() string |
| } |
| |
| // pflagValueSet is a wrapper around *pflag.ValueSet |
| // that implements FlagValueSet. |
| type pflagValueSet struct { |
| flags *pflag.FlagSet |
| } |
| |
| // VisitAll iterates over all *pflag.Flag inside the *pflag.FlagSet. |
| func (p pflagValueSet) VisitAll(fn func(flag FlagValue)) { |
| p.flags.VisitAll(func(flag *pflag.Flag) { |
| fn(pflagValue{flag}) |
| }) |
| } |
| |
| // pflagValue is a wrapper aroung *pflag.flag |
| // that implements FlagValue |
| type pflagValue struct { |
| flag *pflag.Flag |
| } |
| |
| // HasChanges returns whether the flag has changes or not. |
| func (p pflagValue) HasChanged() bool { |
| return p.flag.Changed |
| } |
| |
| // Name returns the name of the flag. |
| func (p pflagValue) Name() string { |
| return p.flag.Name |
| } |
| |
| // ValueString returns the value of the flag as a string. |
| func (p pflagValue) ValueString() string { |
| return p.flag.Value.String() |
| } |
| |
| // ValueType returns the type of the flag as a string. |
| func (p pflagValue) ValueType() string { |
| return p.flag.Value.Type() |
| } |