func (c *config) processRegKeys(r types.ConfigRegistration) { fsn := fmt.Sprintf("%s Flags", r.Name()) fs, ok := c.flagSets[fsn] if !ok { fs = &pflag.FlagSet{} c.flagSets[fsn] = fs } for k := range r.Keys() { if fs.Lookup(k.FlagName()) != nil { continue } evn := k.EnvVarName() if LogRegKey { log.WithFields(log.Fields{ "keyName": k.KeyName(), "keyType": k.KeyType(), "flagName": k.FlagName(), "envVar": evn, "defaultValue": k.DefaultValue(), "usage": k.Description(), }).Debug("adding flag") } // bind the environment variable c.v.BindEnv(k.KeyName(), evn) if k.Short() == "" { switch k.KeyType() { case String, SecureString: fs.String(k.FlagName(), k.DefaultValue().(string), k.Description()) case Int: fs.Int(k.FlagName(), k.DefaultValue().(int), k.Description()) case Bool: fs.Bool(k.FlagName(), k.DefaultValue().(bool), k.Description()) } } else { switch k.KeyType() { case String, SecureString: fs.StringP(k.FlagName(), k.Short(), k.DefaultValue().(string), k.Description()) case Int: fs.IntP(k.FlagName(), k.Short(), k.DefaultValue().(int), k.Description()) case Bool: fs.BoolP(k.FlagName(), k.Short(), k.DefaultValue().(bool), k.Description()) } } c.v.BindPFlag(k.KeyName(), fs.Lookup(k.FlagName())) } }
func (c *config) processRegKeys(r types.ConfigRegistration) { for k := range r.Keys() { c.v.BindEnv(k.KeyName(), k.EnvVarName()) } }