[#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. // configuration values are read from it.
// Otherwise, Config is a degenerate tree. // Otherwise, Config is a degenerate tree.
func New(_ Prm, opts ...configViper.Option) *Config { 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{ return &Config{
v: v, v: v,

View file

@ -15,7 +15,7 @@ const (
EnvSeparator = "_" EnvSeparator = "_"
) )
func CreateViper(opts ...Option) (*viper.Viper, *Opts) { func CreateViper(opts ...Option) (*viper.Viper, *Opts, error) {
v := viper.New() v := viper.New()
o := DefaultOpts() o := DefaultOpts()
@ -34,17 +34,17 @@ func CreateViper(opts ...Option) (*viper.Viper, *Opts) {
err := v.ReadInConfig() err := v.ReadInConfig()
if err != nil { 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 o.ConfigDir != "" {
if err := config.ReadConfigDir(v, o.ConfigDir); err != nil { 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 { func ReloadViper(v *viper.Viper, o Opts) error {