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  }