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
}