diff --git a/api/internal/crawl/doc/doc.go b/api/internal/crawl/doc/doc.go index 98a75c457..4c3eb1c6f 100644 --- a/api/internal/crawl/doc/doc.go +++ b/api/internal/crawl/doc/doc.go @@ -123,6 +123,8 @@ func (doc *KustomizationDocument) ParseYAML() error { identifierSet := make(set) valueSet := make(set) + kindSet := make(set) + getKind := func(m map[string]interface{}) string { const defaultStr = "Kustomization" kind, ok := m["kind"] @@ -141,10 +143,14 @@ func (doc *KustomizationDocument) ParseYAML() error { } for _, contents := range ks { - doc.Kinds = append(doc.Kinds, getKind(contents)) + kindSet[getKind(contents)] = struct{}{} createFlatStructure(identifierSet, valueSet, contents) } + for val := range kindSet { + doc.Kinds = append(doc.Kinds, val) + } + for val := range valueSet { doc.Values = append(doc.Values, val) } diff --git a/api/internal/crawl/doc/doc_test.go b/api/internal/crawl/doc/doc_test.go index 9c004daa5..6fef92d97 100644 --- a/api/internal/crawl/doc/doc_test.go +++ b/api/internal/crawl/doc/doc_test.go @@ -121,6 +121,38 @@ metadata: kind: Custom metadata: name: app-crd +`, + }, + { + identifiers: []string{ + "kind", + "metadata", + "metadata:name", + }, + values: []string{ + "kind=Deployment", + "kind=Service", + "metadata:name=app1", + "metadata:name=app2", + }, + kinds: []string{ + "Deployment", + "Service", + }, + filepath: "resources.yaml", + yaml: ` +--- +kind: Deployment +metadata: + name: app1 +--- +kind: Deployment +metadata: + name: app2 +--- +kind: Service +metadata: + name: app1 `, }, }