func ExtractManifests()

in pkg/testutils/fs.go [82:129]


func ExtractManifests(to, from string, isolateKinds []string) error {
	manifestPath, ok := RelativePath(from)
	if !ok {
		return fmt.Errorf("failed to find manifest path")
	}

	manifestData, err := os.ReadFile(manifestPath)
	if err != nil {
		return fmt.Errorf("failed to read manifest: %w", err)
	}

	manifests := filepath.Join(to, "manifests.yaml")
	decoder := yaml.NewYAMLOrJSONDecoder(strings.NewReader(string(manifestData)), 4096)
	for {
		var manifest map[string]interface{}
		if err := decoder.Decode(&manifest); err != nil {
			if err == io.EOF {
				break
			}
			return fmt.Errorf("failed to decode manifest: %w", err)
		}
		manifestBytes, err := goyaml.Marshal(manifest)
		if err != nil {
			return fmt.Errorf("failed to marshal manifest: %w", err)
		}

		isolateKind := manifest["kind"].(string)
		if slices.Contains(isolateKinds, isolateKind) {
			if err := os.WriteFile(filepath.Join(to, isolateKind+".yaml"), manifestBytes, 0644); err != nil {
				return fmt.Errorf("failed to write manifest: %w", err)
			}
		} else {
			f, err := os.OpenFile(manifests, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
			if err != nil {
				return fmt.Errorf("failed to open file: %w", err)
			}
			defer f.Close()
			if _, err := f.Write(manifestBytes); err != nil {
				return fmt.Errorf("failed to write manifest: %w", err)
			}
			if _, err := f.WriteString("\n---\n"); err != nil {
				return fmt.Errorf("failed to write manifest: %w", err)
			}
		}
	}

	return nil
}