mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
pkg/flags: print out evn usage information
This commit is contained in:
parent
25c87f13fd
commit
c8f5e03b75
@ -73,22 +73,47 @@ func SetFlagsFromEnv(fs *flag.FlagSet) error {
|
||||
var err error
|
||||
alreadySet := make(map[string]bool)
|
||||
fs.Visit(func(f *flag.Flag) {
|
||||
alreadySet[f.Name] = true
|
||||
alreadySet[flagToEnv(f.Name)] = true
|
||||
})
|
||||
usedEnvKey := make(map[string]bool)
|
||||
fs.VisitAll(func(f *flag.Flag) {
|
||||
if !alreadySet[f.Name] {
|
||||
key := "ETCD_" + strings.ToUpper(strings.Replace(f.Name, "-", "_", -1))
|
||||
key := flagToEnv(f.Name)
|
||||
if !alreadySet[key] {
|
||||
val := os.Getenv(key)
|
||||
if val != "" {
|
||||
usedEnvKey[key] = true
|
||||
if serr := fs.Set(f.Name, val); serr != nil {
|
||||
err = fmt.Errorf("invalid value %q for %s: %v", val, key, serr)
|
||||
}
|
||||
plog.Infof("recognized and used environment variable %s=%s", key, val)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
for _, env := range os.Environ() {
|
||||
kv := strings.SplitN(env, "=", 2)
|
||||
if len(kv) != 2 {
|
||||
plog.Warningf("found invalid env %s", env)
|
||||
}
|
||||
if usedEnvKey[kv[0]] {
|
||||
continue
|
||||
}
|
||||
if alreadySet[kv[0]] {
|
||||
plog.Infof("recognized environment variable %s, but unused: shadowed by corresponding flag ", kv[0])
|
||||
continue
|
||||
}
|
||||
if strings.HasPrefix(env, "ETCD_") {
|
||||
plog.Warningf("unrecognized environment variable %s", env)
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func flagToEnv(name string) string {
|
||||
return "ETCD_" + strings.ToUpper(strings.Replace(name, "-", "_", -1))
|
||||
}
|
||||
|
||||
// SetBindAddrFromAddr sets the value of bindAddr flag from the value
|
||||
// of addr flag. Both flags' Value must be of type IPAddressPort. If the
|
||||
// bindAddr flag is set and the addr flag is unset, it will set bindAddr to
|
||||
|
Loading…
x
Reference in New Issue
Block a user