From f04ffd899dd5109e10c5b161d1989c0b178440d9 Mon Sep 17 00:00:00 2001 From: cyprinus Date: Sun, 4 Jun 2023 11:36:57 +0800 Subject: [PATCH] Fix watch register. --- viper.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/viper.go b/viper.go index 31df59d..96deeb3 100644 --- a/viper.go +++ b/viper.go @@ -478,15 +478,11 @@ func (v *Viper) WatchConfig() { (event.Has(fsnotify.Write) || event.Has(fsnotify.Create))) || (currentConfigFile != "" && currentConfigFile != realConfigFile) { realConfigFile = currentConfigFile - tempViper := New() - tempViper.AddConfigPath(realConfigFile) - err := tempViper.ReadInConfig() + err := v.ReadInConfig() if err != nil { log.Printf("error reading config file: %v\n", err) } - v.updateRegisteredConfig(tempViper) - if v.onConfigChange != nil { v.onConfigChange(event) } @@ -1623,11 +1619,13 @@ func (v *Viper) ReadInConfig() error { } config := make(map[string]interface{}) - - err = v.unmarshalReader(bytes.NewReader(file), config) + tempViper := New() + tempViper.configType = v.getConfigType() + err = tempViper.unmarshalReader(bytes.NewReader(file), config) if err != nil { return err } + v.updateRegisteredConfig(tempViper) v.config = config return nil @@ -1982,7 +1980,10 @@ func (v *Viper) getRemoteConfig(provider RemoteProvider) (map[string]interface{} if err != nil { return nil, err } - err = v.unmarshalReader(reader, v.kvstore) + tempViper := New() + tempViper.configType = v.getConfigType() + err = tempViper.unmarshalReader(reader, tempViper.kvstore) + v.updateRegisteredConfig(tempViper) return v.kvstore, err } @@ -1999,6 +2000,7 @@ func (v *Viper) watchKeyValueConfigOnChannel() error { for { b := <-rc tempViper := New() + tempViper.configType = v.getConfigType() reader := bytes.NewReader(b.Value) tempViper.unmarshalReader(reader, tempViper.kvstore) v.updateRegisteredConfig(tempViper)