func GetObjectTypes()

in images/controller/pkg/builder.go [231:259]


func GetObjectTypes(srcDir string) ([]string, error) {
	resp := make([]string, 0)

	cmd := exec.Command("sh", "-o", "pipefail", "-c", fmt.Sprintf("kustomize build %s", srcDir))
	cmd.Dir = srcDir
	stdoutStderr, err := cmd.CombinedOutput()
	if err != nil {
		return resp, fmt.Errorf("error running kustomize build on directory %s: %v\n%s", srcDir, err, stdoutStderr)
	}

	kindMap := make(map[string]int, 0)
	scanner := bufio.NewScanner(bytes.NewReader(stdoutStderr))
	kindPat := regexp.MustCompile(`^kind: (?P<kind>.*)`)
	for scanner.Scan() {
		line := scanner.Text()
		match := kindPat.FindStringSubmatch(line)
		if len(match) > 1 {
			kind := match[1]
			kindMap[kind] += 1
		}
	}

	for k := range kindMap {
		resp = append(resp, k)
	}
	sort.Strings(resp)

	return resp, nil
}