From 1880377af67aa0db2f3bc90bceb4f7a926e6c076 Mon Sep 17 00:00:00 2001 From: frenchben Date: Mon, 27 Sep 2021 19:46:57 -0700 Subject: [PATCH] Status of slice is important Signed-off-by: frenchben --- pkg/chart/loader/load.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index df7ef7227..0a52f91c9 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -74,7 +74,7 @@ type BufferedFile struct { func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { c := new(chart.Chart) subcharts := make(map[string][]*BufferedFile) - subChartsKeys := make([]string, 0) + var subChartsKeys []string // do not rely on assumed ordering of files in the chart and crash // if Chart.yaml was not coming early enough to initialize metadata @@ -155,7 +155,9 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { fname := strings.TrimPrefix(f.Name, "charts/") cname := strings.SplitN(fname, "/", 2)[0] // map[string] is unsorted - keep an array to keep things sorted - subChartsKeys = append(subChartsKeys, cname) + if !stringInSlice(cname, subChartsKeys) { + subChartsKeys = append(subChartsKeys, cname) + } subcharts[cname] = append(subcharts[cname], &BufferedFile{Name: fname, Data: f.Data, ModTime: f.ModTime}) default: c.Files = append(c.Files, &chart.File{Name: f.Name, Data: f.Data, ModTime: f.ModTime}) @@ -207,3 +209,12 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, nil } + +func stringInSlice(a string, list []string) bool { + for _, b := range list { + if b == a { + return true + } + } + return false +}