github.com/operator-framework/operator-lifecycle-manager@v0.30.0/test/e2e/util/decode.go (about) 1 package util 2 3 import ( 4 "os" 5 "strings" 6 7 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/controller-runtime/client" 8 utilyaml "k8s.io/apimachinery/pkg/util/yaml" 9 ) 10 11 type clientObjectOption func(client.Object) 12 13 func WithNamespace(namespace string) clientObjectOption { 14 return func(obj client.Object) { 15 obj.SetNamespace(namespace) 16 } 17 } 18 19 func DecodeFile(file string, to client.Object, options ...clientObjectOption) (client.Object, error) { 20 manifest, err := yamlFromFilePath(file) 21 if err != nil { 22 return nil, err 23 } 24 dec := utilyaml.NewYAMLOrJSONDecoder(strings.NewReader(manifest), 10) 25 if err := dec.Decode(to); err != nil { 26 return nil, err 27 } 28 29 return to, nil 30 } 31 32 func yamlFromFilePath(fileName string) (string, error) { 33 yaml, err := os.ReadFile(fileName) 34 return string(yaml), err 35 }