mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-17 18:25:26 +00:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
// Copyright 2019 The Kubernetes Authors.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package types
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"sigs.k8s.io/yaml"
|
|
)
|
|
|
|
// FixKustomizationPreUnmarshalling modifies the raw data
|
|
// before marshalling - e.g. changes old field names to
|
|
// new field names.
|
|
func FixKustomizationPreUnmarshalling(data []byte) ([]byte, error) {
|
|
deprecatedFieldsMap := map[string]string{
|
|
"imageTags:": "images:",
|
|
}
|
|
for oldname, newname := range deprecatedFieldsMap {
|
|
pattern := regexp.MustCompile(oldname)
|
|
data = pattern.ReplaceAll(data, []byte(newname))
|
|
}
|
|
doLegacy, err := useLegacyPatch(data)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if doLegacy {
|
|
pattern := regexp.MustCompile("patches:")
|
|
data = pattern.ReplaceAll(data, []byte("patchesStrategicMerge:"))
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
func useLegacyPatch(data []byte) (bool, error) {
|
|
found := false
|
|
var object map[string]interface{}
|
|
err := yaml.Unmarshal(data, &object)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
if rawPatches, ok := object["patches"]; ok {
|
|
patches, ok := rawPatches.([]interface{})
|
|
if !ok {
|
|
return false, err
|
|
}
|
|
for _, p := range patches {
|
|
_, ok := p.(string)
|
|
if ok {
|
|
found = true
|
|
}
|
|
}
|
|
}
|
|
return found, nil
|
|
}
|