mirror of
https://github.com/spf13/viper
synced 2025-05-11 22:57:21 +00:00
Merge 69c351ace2
into b534983313
This commit is contained in:
commit
f38b3295c1
1 changed files with 11 additions and 1 deletions
12
viper.go
12
viper.go
|
@ -60,7 +60,7 @@ func (e ConfigMarshalError) Error() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var v *Viper
|
var v *Viper
|
||||||
|
var mutex sync.RWMutex
|
||||||
type RemoteResponse struct {
|
type RemoteResponse struct {
|
||||||
Value []byte
|
Value []byte
|
||||||
Error error
|
Error error
|
||||||
|
@ -559,7 +559,9 @@ func (v *Viper) searchMap(source map[string]interface{}, path []string) interfac
|
||||||
return source
|
return source
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mutex.RLock()
|
||||||
next, ok := source[path[0]]
|
next, ok := source[path[0]]
|
||||||
|
mutex.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
// Fast path
|
// Fast path
|
||||||
if len(path) == 1 {
|
if len(path) == 1 {
|
||||||
|
@ -602,7 +604,9 @@ func (v *Viper) searchMapWithPathPrefixes(source map[string]interface{}, path []
|
||||||
for i := len(path); i > 0; i-- {
|
for i := len(path); i > 0; i-- {
|
||||||
prefixKey := strings.ToLower(strings.Join(path[0:i], v.keyDelim))
|
prefixKey := strings.ToLower(strings.Join(path[0:i], v.keyDelim))
|
||||||
|
|
||||||
|
mutex.RLock()
|
||||||
next, ok := source[prefixKey]
|
next, ok := source[prefixKey]
|
||||||
|
mutex.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
// Fast path
|
// Fast path
|
||||||
if i == len(path) {
|
if i == len(path) {
|
||||||
|
@ -1344,7 +1348,9 @@ func (v *Viper) Set(key string, value interface{}) {
|
||||||
deepestMap := deepSearch(v.override, path[0:len(path)-1])
|
deepestMap := deepSearch(v.override, path[0:len(path)-1])
|
||||||
|
|
||||||
// set innermost value
|
// set innermost value
|
||||||
|
mutex.Lock()
|
||||||
deepestMap[lastKey] = value
|
deepestMap[lastKey] = value
|
||||||
|
mutex.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadInConfig will discover and load the configuration file from disk
|
// ReadInConfig will discover and load the configuration file from disk
|
||||||
|
@ -1572,7 +1578,9 @@ func (v *Viper) unmarshalReader(in io.Reader, c map[string]interface{}) error {
|
||||||
lastKey := strings.ToLower(path[len(path)-1])
|
lastKey := strings.ToLower(path[len(path)-1])
|
||||||
deepestMap := deepSearch(c, path[0:len(path)-1])
|
deepestMap := deepSearch(c, path[0:len(path)-1])
|
||||||
// set innermost value
|
// set innermost value
|
||||||
|
mutex.Lock()
|
||||||
deepestMap[lastKey] = value
|
deepestMap[lastKey] = value
|
||||||
|
mutex.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
case "ini":
|
case "ini":
|
||||||
|
@ -1972,7 +1980,9 @@ func (v *Viper) AllSettings() map[string]interface{} {
|
||||||
lastKey := strings.ToLower(path[len(path)-1])
|
lastKey := strings.ToLower(path[len(path)-1])
|
||||||
deepestMap := deepSearch(m, path[0:len(path)-1])
|
deepestMap := deepSearch(m, path[0:len(path)-1])
|
||||||
// set innermost value
|
// set innermost value
|
||||||
|
mutex.Lock()
|
||||||
deepestMap[lastKey] = value
|
deepestMap[lastKey] = value
|
||||||
|
mutex.Unlock()
|
||||||
}
|
}
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue