@@ -734,20 +734,19 @@ func parseManifestResources(manifest, defaultNamespace string) []OwnedResource {
734734 manifests := releaseutil .SplitManifests (manifest )
735735
736736 for _ , m := range manifests {
737- // Simple parsing - look for kind, apiVersion, name, and namespace
738737 lines := strings .Split (m , "\n " )
739738 var kind , apiVersion , name , namespace string
740739
740+ // Take the first occurrence of each top-level field; nested specs
741+ // (e.g. spec.template) can repeat the same keys with different values.
741742 for _ , line := range lines {
742743 line = strings .TrimSpace (line )
743- if after , ok := strings .CutPrefix (line , "kind:" ); ok {
744- kind = strings .TrimSpace (after )
745- } else if after , ok := strings .CutPrefix (line , "apiVersion:" ); ok {
744+ if after , ok := strings .CutPrefix (line , "kind:" ); ok && kind == "" {
745+ kind = strings .Trim ( strings . TrimSpace (after ), `"'` )
746+ } else if after , ok := strings .CutPrefix (line , "apiVersion:" ); ok && apiVersion == "" {
746747 apiVersion = strings .Trim (strings .TrimSpace (after ), `"'` )
747748 } else if strings .HasPrefix (line , "name:" ) && name == "" {
748- // Only take first name (metadata.name, not container names etc)
749749 name = strings .TrimSpace (strings .TrimPrefix (line , "name:" ))
750- // Remove quotes if present
751750 name = strings .Trim (name , `"'` )
752751 } else if strings .HasPrefix (line , "namespace:" ) && namespace == "" {
753752 namespace = strings .TrimSpace (strings .TrimPrefix (line , "namespace:" ))
0 commit comments