Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
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() |
|
}
|
|
|