diff --git a/cmd/neofs-rest-gw/config.go b/cmd/neofs-rest-gw/config.go index da093b4..ac57fcd 100644 --- a/cmd/neofs-rest-gw/config.go +++ b/cmd/neofs-rest-gw/config.go @@ -134,8 +134,10 @@ func config() *viper.Viper { v.SetDefault(cfgLoggerLevel, "debug") // Bind flags - if err := bindFlags(v, flagSet); err != nil { - panic(fmt.Errorf("bind flags: %w", err)) + for cfg, cmd := range bindings { + if err := v.BindPFlag(cfg, flagSet.Lookup(cmd)); err != nil { + panic(fmt.Errorf("bind flags: %w", err)) + } } if err := flagSet.Parse(os.Args); err != nil { @@ -185,34 +187,42 @@ func config() *viper.Viper { return v } -func bindFlags(v *viper.Viper, flagSet *pflag.FlagSet) error { - if err := v.BindPFlag(cfgPprofEnabled, flagSet.Lookup(cmdPprof)); err != nil { - return err - } - if err := v.BindPFlag(cfgPrometheusEnabled, flagSet.Lookup(cmdMetrics)); err != nil { - return err - } - if err := v.BindPFlag(cfgNodeDialTimeout, flagSet.Lookup(cmdNodeDialTimeout)); err != nil { - return err - } - if err := v.BindPFlag(cfgHealthcheckTimeout, flagSet.Lookup(cmdHealthcheckTimeout)); err != nil { - return err - } - if err := v.BindPFlag(cfgRebalance, flagSet.Lookup(cmdRebalance)); err != nil { - return err - } - if err := v.BindPFlag(cfgWalletPath, flagSet.Lookup(cmdWallet)); err != nil { - return err - } - if err := v.BindPFlag(cfgWalletAddress, flagSet.Lookup(cmdAddress)); err != nil { - return err +func init() { + for _, flagName := range serverFlags { + cfgName := cfgServerSection + flagName + bindings[cfgName] = flagName + knownConfigParams[cfgName] = struct{}{} } +} - if err := restapi.BindFlagsToConfig(v, flagSet, cfgServerSection); err != nil { - return err - } +var serverFlags = []string{ + restapi.FlagScheme, + restapi.FlagCleanupTimeout, + restapi.FlagGracefulTimeout, + restapi.FlagMaxHeaderSize, + restapi.FlagListenAddress, + restapi.FlagListenLimit, + restapi.FlagKeepAlive, + restapi.FlagReadTimeout, + restapi.FlagWriteTimeout, + restapi.FlagTLSListenAddress, + restapi.FlagTLSCertificate, + restapi.FlagTLSKey, + restapi.FlagTLSCa, + restapi.FlagTLSListenLimit, + restapi.FlagTLSKeepAlive, + restapi.FlagTLSReadTimeout, + restapi.FlagTLSWriteTimeout, +} - return nil +var bindings = map[string]string{ + cfgPprofEnabled: cmdPprof, + cfgPrometheusEnabled: cmdMetrics, + cfgNodeDialTimeout: cmdNodeDialTimeout, + cfgHealthcheckTimeout: cmdHealthcheckTimeout, + cfgRebalance: cmdRebalance, + cfgWalletPath: cmdWallet, + cfgWalletAddress: cmdAddress, } var knownConfigParams = map[string]struct{}{ @@ -228,24 +238,6 @@ var knownConfigParams = map[string]struct{}{ cfgPrometheusAddress: {}, cfgPprofEnabled: {}, cfgPprofAddress: {}, - - cfgServerSection + restapi.FlagScheme: {}, - cfgServerSection + restapi.FlagCleanupTimeout: {}, - cfgServerSection + restapi.FlagGracefulTimeout: {}, - cfgServerSection + restapi.FlagMaxHeaderSize: {}, - cfgServerSection + restapi.FlagListenAddress: {}, - cfgServerSection + restapi.FlagListenLimit: {}, - cfgServerSection + restapi.FlagKeepAlive: {}, - cfgServerSection + restapi.FlagReadTimeout: {}, - cfgServerSection + restapi.FlagWriteTimeout: {}, - cfgServerSection + restapi.FlagTLSListenAddress: {}, - cfgServerSection + restapi.FlagTLSCertificate: {}, - cfgServerSection + restapi.FlagTLSKey: {}, - cfgServerSection + restapi.FlagTLSCa: {}, - cfgServerSection + restapi.FlagTLSListenLimit: {}, - cfgServerSection + restapi.FlagTLSKeepAlive: {}, - cfgServerSection + restapi.FlagTLSReadTimeout: {}, - cfgServerSection + restapi.FlagTLSWriteTimeout: {}, } func validateConfig(cfg *viper.Viper, logger *zap.Logger) { diff --git a/gen/restapi/server_config.go b/gen/restapi/server_config.go index f5f9083..8c8d3df 100644 --- a/gen/restapi/server_config.go +++ b/gen/restapi/server_config.go @@ -6,7 +6,6 @@ import ( "time" "github.com/spf13/pflag" - "github.com/spf13/viper" ) const ( @@ -52,63 +51,3 @@ func BindDefaultFlags(flagSet *pflag.FlagSet) { flagSet.Duration(FlagTLSReadTimeout, 30*time.Second, "maximum duration before timing out read of the request") flagSet.Duration(FlagTLSWriteTimeout, 30*time.Second, "maximum duration before timing out write of the response") } - -// BindFlagsToConfig maps flags to viper config in specific section. -func BindFlagsToConfig(v *viper.Viper, flagSet *pflag.FlagSet, section string) error { - if err := v.BindPFlag(section+FlagScheme, flagSet.Lookup(FlagScheme)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagCleanupTimeout, flagSet.Lookup(FlagCleanupTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagGracefulTimeout, flagSet.Lookup(FlagGracefulTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagMaxHeaderSize, flagSet.Lookup(FlagMaxHeaderSize)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagListenAddress, flagSet.Lookup(FlagListenAddress)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagListenLimit, flagSet.Lookup(FlagListenLimit)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagKeepAlive, flagSet.Lookup(FlagKeepAlive)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagReadTimeout, flagSet.Lookup(FlagReadTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagWriteTimeout, flagSet.Lookup(FlagWriteTimeout)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagTLSListenAddress, flagSet.Lookup(FlagTLSListenAddress)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSCertificate, flagSet.Lookup(FlagTLSCertificate)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSKey, flagSet.Lookup(FlagTLSKey)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSCa, flagSet.Lookup(FlagTLSCa)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSListenLimit, flagSet.Lookup(FlagTLSListenLimit)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSKeepAlive, flagSet.Lookup(FlagTLSKeepAlive)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSReadTimeout, flagSet.Lookup(FlagTLSReadTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSWriteTimeout, flagSet.Lookup(FlagTLSWriteTimeout)); err != nil { - return err - } - - return nil -} diff --git a/templates/server/config.gotmpl b/templates/server/config.gotmpl index 7c77610..2517cdf 100644 --- a/templates/server/config.gotmpl +++ b/templates/server/config.gotmpl @@ -10,7 +10,6 @@ import ( "time" "github.com/spf13/pflag" - "github.com/spf13/viper" ) const ( @@ -56,63 +55,3 @@ func BindDefaultFlags(flagSet *pflag.FlagSet) { flagSet.Duration(FlagTLSReadTimeout, 30*time.Second, "maximum duration before timing out read of the request") flagSet.Duration(FlagTLSWriteTimeout, 30*time.Second, "maximum duration before timing out write of the response") } - -// BindFlagsToConfig maps flags to viper config in specific section. -func BindFlagsToConfig(v *viper.Viper, flagSet *pflag.FlagSet, section string) error { - if err := v.BindPFlag(section+FlagScheme, flagSet.Lookup(FlagScheme)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagCleanupTimeout, flagSet.Lookup(FlagCleanupTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagGracefulTimeout, flagSet.Lookup(FlagGracefulTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagMaxHeaderSize, flagSet.Lookup(FlagMaxHeaderSize)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagListenAddress, flagSet.Lookup(FlagListenAddress)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagListenLimit, flagSet.Lookup(FlagListenLimit)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagKeepAlive, flagSet.Lookup(FlagKeepAlive)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagReadTimeout, flagSet.Lookup(FlagReadTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagWriteTimeout, flagSet.Lookup(FlagWriteTimeout)); err != nil { - return err - } - - if err := v.BindPFlag(section+FlagTLSListenAddress, flagSet.Lookup(FlagTLSListenAddress)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSCertificate, flagSet.Lookup(FlagTLSCertificate)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSKey, flagSet.Lookup(FlagTLSKey)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSCa, flagSet.Lookup(FlagTLSCa)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSListenLimit, flagSet.Lookup(FlagTLSListenLimit)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSKeepAlive, flagSet.Lookup(FlagTLSKeepAlive)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSReadTimeout, flagSet.Lookup(FlagTLSReadTimeout)); err != nil { - return err - } - if err := v.BindPFlag(section+FlagTLSWriteTimeout, flagSet.Lookup(FlagTLSWriteTimeout)); err != nil { - return err - } - - return nil -}