mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #3382 from xiang90/env
pkg/flags: print out evn usage information
This commit is contained in:
commit
b2d33e6dcb
@ -73,22 +73,47 @@ func SetFlagsFromEnv(fs *flag.FlagSet) error {
|
|||||||
var err error
|
var err error
|
||||||
alreadySet := make(map[string]bool)
|
alreadySet := make(map[string]bool)
|
||||||
fs.Visit(func(f *flag.Flag) {
|
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) {
|
fs.VisitAll(func(f *flag.Flag) {
|
||||||
if !alreadySet[f.Name] {
|
key := flagToEnv(f.Name)
|
||||||
key := "ETCD_" + strings.ToUpper(strings.Replace(f.Name, "-", "_", -1))
|
if !alreadySet[key] {
|
||||||
val := os.Getenv(key)
|
val := os.Getenv(key)
|
||||||
if val != "" {
|
if val != "" {
|
||||||
|
usedEnvKey[key] = true
|
||||||
if serr := fs.Set(f.Name, val); serr != nil {
|
if serr := fs.Set(f.Name, val); serr != nil {
|
||||||
err = fmt.Errorf("invalid value %q for %s: %v", val, key, serr)
|
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
|
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
|
// SetBindAddrFromAddr sets the value of bindAddr flag from the value
|
||||||
// of addr flag. Both flags' Value must be of type IPAddressPort. If the
|
// 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
|
// bindAddr flag is set and the addr flag is unset, it will set bindAddr to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user