[#125] node: Avoid panic when reading config

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
Anton Nikiforov 2023-04-24 10:09:04 +03:00
parent d390f093e0
commit eb7be82e87
2 changed files with 9 additions and 5 deletions

View file

@ -35,7 +35,11 @@ type Prm struct{}
// configuration values are read from it.
// Otherwise, Config is a degenerate tree.
func New(_ Prm, opts ...configViper.Option) *Config {
v, o := configViper.CreateViper(opts...)
v, o, err := configViper.CreateViper(opts...)
if err != nil {
panic(err)
}
return &Config{
v: v,

View file

@ -15,7 +15,7 @@ const (
EnvSeparator = "_"
)
func CreateViper(opts ...Option) (*viper.Viper, *Opts) {
func CreateViper(opts ...Option) (*viper.Viper, *Opts, error) {
v := viper.New()
o := DefaultOpts()
@ -34,17 +34,17 @@ func CreateViper(opts ...Option) (*viper.Viper, *Opts) {
err := v.ReadInConfig()
if err != nil {
panic(fmt.Errorf("failed to read config: %w", err))
return nil, nil, fmt.Errorf("failed to read config: %w", err)
}
}
if o.ConfigDir != "" {
if err := config.ReadConfigDir(v, o.ConfigDir); err != nil {
panic(fmt.Errorf("failed to read config dir: %w", err))
return nil, nil, fmt.Errorf("failed to read config dir: %w", err)
}
}
return v, o
return v, o, nil
}
func ReloadViper(v *viper.Viper, o Opts) error {