package internal import ( "errors" "fmt" "time" "github.com/jinzhu/configor" ) type Config = struct { LogLevel string `default:"Info" env:"METALLB_IP_FLOATER_LOGLEVEL"` LabelSelector string `default:"kops.k8s.io/instance-role=Node" env:"METALLB_IP_FLOATER_LABELSELECTOR"` Protocol string `default:"http" env:"METALLB_IP_FLOATER_PROTOCOL"` HcloudToken string `default:"" env:"METALLB_IP_FLOATER_HCLOUD_TOKEN"` FloatingIPName string `default:"" env:"METALLB_IP_FLOATER_FLOATING_IP_NAME"` DryRun bool `default:"false" env:"METALLB_IP_FLOATER_DRY_RUN"` } func GenConfig() (cfg *Config, err error) { cfg = &Config{} err = configor.New(&configor.Config{ ENVPrefix: "METALLB_IP_FLOATER", AutoReload: true, Silent: true, AutoReloadInterval: time.Minute}).Load(cfg, "config.json") if err != nil { return nil, errors.New(fmt.Sprintf("Error generating Config: %s", err.Error())) } return cfg, nil }