func getTemplates() (map[string]K8sObject, error) {
	templates := make(map[string]K8sObject)
	cmd := exec.Command("helm", "template", operatorChartPath)
	out, err := cmd.Output()
	if err != nil {
		return nil, err
	}
	rawYAMLFiles := strings.Split(string(out), "---\n")
	for _, rawYAMLFile := range rawYAMLFiles {
		var curObject K8sObject
		err = yaml.Unmarshal([]byte(rawYAMLFile), &curObject)
		if err != nil {
			return nil, err
		}
		templates[fmt.Sprintf("%s#%v", curObject.Kind, curObject.Metadata["name"])] = curObject
	}
	return templates, nil
}
getTemplates renders all the template files in this Helm chart and stores them into a map whose keys are the
Kubernetes resource kind plus name and values are the Kubernetes resource itself.
package main
import (
	"errors"
	"fmt"
	"log"
	"os"
	"os/exec"
	"reflect"
	"strings"
	"gopkg.in/yaml.v3"
)
const (
	operatorChartPath = ".."
	appVersion        = "appVersion"
)