mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 02:55:22 +00:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package doc
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
func FixKustomizationPreUnmarshallingNonFatal(data []byte) ([]byte, error) {
|
|
deprecateFieldsMap := map[string]string{
|
|
"imageTags:": "images:",
|
|
}
|
|
for oldname, newname := range deprecateFieldsMap {
|
|
pattern := regexp.MustCompile(oldname)
|
|
data = pattern.ReplaceAll(data, []byte(newname))
|
|
}
|
|
|
|
found, err := useLegacyPatch(data)
|
|
if err == nil && found {
|
|
pattern := regexp.MustCompile("patches:")
|
|
data = pattern.ReplaceAll(data, []byte("patchesStrategicMerge:"))
|
|
}
|
|
|
|
return data, err
|
|
}
|
|
|
|
func useLegacyPatch(data []byte) (bool, error) {
|
|
found := false
|
|
|
|
var object map[string]interface{}
|
|
err := yaml.Unmarshal(data, &object)
|
|
if err != nil {
|
|
return false, fmt.Errorf("invalid content from %s",
|
|
string(data))
|
|
}
|
|
if rawPatches, ok := object["patches"]; ok {
|
|
patches, ok := rawPatches.([]interface{})
|
|
if !ok {
|
|
return false, fmt.Errorf("invalid patches from %v",
|
|
rawPatches)
|
|
}
|
|
for _, p := range patches {
|
|
_, ok := p.(string)
|
|
if ok {
|
|
found = true
|
|
}
|
|
}
|
|
}
|
|
return found, nil
|
|
}
|