...
1
2
3
4
5
6 package decoder
7
8 import (
9 "bytes"
10
11 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
12 "k8s.io/apimachinery/pkg/runtime"
13 yamlutil "k8s.io/apimachinery/pkg/util/yaml"
14 )
15
16
17
18 func DecodeYAML(d []byte) ([]*unstructured.Unstructured, error) {
19 var manifests []*unstructured.Unstructured
20
21 decoder := yamlutil.NewYAMLToJSONDecoder(bytes.NewReader(d))
22
23 for {
24
25 var rawObj runtime.RawExtension
26 if err := decoder.Decode(&rawObj); err != nil {
27 break
28 }
29
30
31 obj := &unstructured.Unstructured{}
32 if rawObj.Size() == 0 {
33 continue
34 }
35 if err := obj.UnmarshalJSON(rawObj.Raw); err != nil {
36 return nil, err
37 }
38
39
40
41 manifests = append(manifests, obj)
42 }
43
44 return manifests, nil
45 }
46
View as plain text