remove inline json patch format

This commit is contained in:
Jingfang Liu
2018-09-06 11:18:00 -07:00
parent dc9ae64646
commit 81b5cf65d6
3 changed files with 53 additions and 61 deletions

View File

@@ -20,6 +20,7 @@ import (
"fmt"
"github.com/evanphx/json-patch"
"github.com/krishicks/yaml-patch"
"github.com/kubernetes-sigs/kustomize/pkg/loader"
"github.com/kubernetes-sigs/kustomize/pkg/patch"
"github.com/kubernetes-sigs/kustomize/pkg/resource"
@@ -56,8 +57,8 @@ func (f PatchJson6902Factory) makeOnePatchJson6902Transformer(p patch.PatchJson6
if p.Target == nil {
return nil, fmt.Errorf("must specify the target field in patchesJson6902")
}
if p.Path != "" && p.JsonPatch != nil {
return nil, fmt.Errorf("cannot specify path and jsonPath at the same time")
if p.Path == "" {
return nil, fmt.Errorf("must specify the path for a json patch file")
}
targetId := resource.NewResIdWithPrefixNamespace(
@@ -71,20 +72,24 @@ func (f PatchJson6902Factory) makeOnePatchJson6902Transformer(p patch.PatchJson6
p.Target.Namespace,
)
if p.JsonPatch != nil {
return newPatchJson6902YAMLTransformer(targetId, p.JsonPatch)
rawOp, err := f.loader.Load(p.Path)
if err != nil {
return nil, err
}
if p.Path != "" {
rawOp, err := f.loader.Load(p.Path)
if err != nil {
return nil, err
}
if isJsonFormat(rawOp) {
decodedPatch, err := jsonpatch.DecodePatch(rawOp)
if err != nil {
return nil, err
}
return newPatchJson6902JSONTransformer(targetId, decodedPatch)
}
return nil, nil
decodedPatch, err := yamlpatch.DecodePatch(rawOp)
if err != nil {
return nil, err
}
return newPatchJson6902YAMLTransformer(targetId, decodedPatch)
}
func isJsonFormat(data []byte) bool {
return data[0] == '['
}