mirror of
https://github.com/ysoftdevs/gardener-extension-shoot-fleet-agent.git
synced 2026-03-23 09:31:39 +01:00
59 lines
1.1 KiB
Go
59 lines
1.1 KiB
Go
package data
|
|
|
|
func RemoveValue(data map[string]interface{}, keys ...string) (interface{}, bool) {
|
|
for i, key := range keys {
|
|
if i == len(keys)-1 {
|
|
val, ok := data[key]
|
|
delete(data, key)
|
|
return val, ok
|
|
}
|
|
data, _ = data[key].(map[string]interface{})
|
|
}
|
|
|
|
return nil, false
|
|
}
|
|
|
|
func GetValueN(data map[string]interface{}, keys ...string) interface{} {
|
|
val, _ := GetValue(data, keys...)
|
|
return val
|
|
}
|
|
|
|
func GetValue(data map[string]interface{}, keys ...string) (interface{}, bool) {
|
|
for i, key := range keys {
|
|
if i == len(keys)-1 {
|
|
val, ok := data[key]
|
|
return val, ok
|
|
}
|
|
data, _ = data[key].(map[string]interface{})
|
|
}
|
|
|
|
return nil, false
|
|
}
|
|
|
|
func PutValue(data map[string]interface{}, val interface{}, keys ...string) {
|
|
if data == nil {
|
|
return
|
|
}
|
|
|
|
// This is so ugly
|
|
for i, key := range keys {
|
|
if i == len(keys)-1 {
|
|
data[key] = val
|
|
} else {
|
|
newData, ok := data[key]
|
|
if ok {
|
|
newMap, ok := newData.(map[string]interface{})
|
|
if ok {
|
|
data = newMap
|
|
} else {
|
|
return
|
|
}
|
|
} else {
|
|
newMap := map[string]interface{}{}
|
|
data[key] = newMap
|
|
data = newMap
|
|
}
|
|
}
|
|
}
|
|
}
|