Skip to content

Commit 3435179

Browse files
authored
Add ParseKubeObjects helper to parse multiple objects (#628)
1 parent 926c864 commit 3435179

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

go/fn/object.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ type KubeObject struct {
3333
SubObject
3434
}
3535

36-
// ParseKubeObject parses input byte slice to a KubeObject.
37-
func ParseKubeObject(in []byte) (*KubeObject, error) {
36+
// ParseKubeObjects parses input byte slice to multiple KubeObjects.
37+
func ParseKubeObjects(in []byte) ([]*KubeObject, error) {
3838
doc, err := internal.ParseDoc(in)
3939
if err != nil {
4040
return nil, fmt.Errorf("failed to parse input bytes: %w", err)
@@ -43,11 +43,25 @@ func ParseKubeObject(in []byte) (*KubeObject, error) {
4343
if err != nil {
4444
return nil, fmt.Errorf("failed to extract objects: %w", err)
4545
}
46+
var kubeObjects []*KubeObject
47+
for _, obj := range objects {
48+
kubeObjects = append(kubeObjects, asKubeObject(obj))
49+
}
50+
return kubeObjects, nil
51+
}
52+
53+
// ParseKubeObject parses input byte slice to a single KubeObject.
54+
func ParseKubeObject(in []byte) (*KubeObject, error) {
55+
objects, err := ParseKubeObjects(in)
56+
if err != nil {
57+
return nil, err
58+
}
59+
4660
if len(objects) != 1 {
4761
return nil, fmt.Errorf("expected exactly one object, got %d", len(objects))
4862
}
49-
rlMap := objects[0]
50-
return asKubeObject(rlMap), nil
63+
obj := objects[0]
64+
return obj, nil
5165
}
5266

5367
// GetOrDie gets the value for a nested field located by fields. A pointer must

0 commit comments

Comments
 (0)