mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-06 07:57:07 +00:00
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
49 lines
1 KiB
Go
49 lines
1 KiB
Go
package data
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"k8s.io/apimachinery/pkg/util/sets"
|
|
)
|
|
|
|
// CopyMap creates a full copy of the target map
|
|
func CopyMap(m map[string]interface{}) map[string]interface{} {
|
|
mapCopy := make(map[string]interface{})
|
|
for k, v := range m {
|
|
mapCopy[k] = v
|
|
}
|
|
return mapCopy
|
|
}
|
|
|
|
// CopySliceOfMaps creates a full copy of the target slice
|
|
func CopySliceOfMaps(s []map[string]interface{}) []interface{} {
|
|
if s == nil {
|
|
return nil
|
|
}
|
|
sliceCopy := make([]interface{}, len(s))
|
|
for i, v := range s {
|
|
sliceCopy[i] = CopyMap(v)
|
|
}
|
|
return sliceCopy
|
|
}
|
|
|
|
func ToMap(data interface{}) (map[string]interface{}, error) {
|
|
if m, ok := data.(map[string]interface{}); ok {
|
|
return m, nil
|
|
}
|
|
b, err := json.Marshal(data)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
mapData := make(map[string]interface{})
|
|
err = json.Unmarshal(b, &mapData)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return mapData, nil
|
|
}
|
|
|
|
// SliceContains checks whether values are contained in slice
|
|
func SliceContains(slice []string, values ...string) bool {
|
|
return sets.New(slice...).HasAny(values...)
|
|
}
|