frostfs-node/cmd/internal/common/config/opts.go
Anton Nikiforov ef222e2487 [#125] cmd: Refactor internal/common/viper
Add `opts.WithViper`, set opts struct as private.

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2023-04-26 13:53:51 +03:00

49 lines
1,003 B
Go

package config
import "github.com/spf13/viper"
type opts struct {
path string
configDir string
envPrefix string
v *viper.Viper
}
func defaultOpts() *opts {
return new(opts)
}
// Option allows to set an optional parameter of the Config.
type Option func(*opts)
// WithConfigFile returns an option to set the system path
// to the configuration file.
func WithConfigFile(path string) Option {
return func(o *opts) {
o.path = path
}
}
// WithConfigDir returns an option to set the system path
// to the directory with configuration files.
func WithConfigDir(path string) Option {
return func(o *opts) {
o.configDir = path
}
}
// WithEnvPrefix returns an option to defines
// a prefix that ENVIRONMENT variables will use.
func WithEnvPrefix(envPrefix string) Option {
return func(o *opts) {
o.envPrefix = envPrefix
}
}
// WithViper returns an option to defines
// a predefined viper.Viper.
func WithViper(v *viper.Viper) Option {
return func(o *opts) {
o.v = v
}
}