github.com/codefresh-io/kcfi@v0.0.0-20230301195427-c1578715cc46/pkg/charts/loader.go (about) 1 package charts 2 3 import ( 4 "bytes" 5 "fmt" 6 "github.com/pkg/errors" 7 "helm.sh/helm/v3/pkg/chart" 8 "helm.sh/helm/v3/pkg/chart/loader" 9 "regexp" 10 "strings" 11 12 eCharts "github.com/codefresh-io/kcfi/pkg/embeded/charts" 13 ) 14 15 func Load(chartName string) (*chart.Chart, error) { 16 17 var chartBufferedFile []*loader.BufferedFile 18 isArchivedChart, _ := regexp.MatchString(`^.*\.tgz$`, chartName) 19 if isArchivedChart { 20 chartData, err := eCharts.Asset(chartName) 21 if err != nil { 22 return nil, errors.Wrapf(err, "Cannot find chart data for %s", chartName) 23 } 24 25 chartBufferedFile, err = loader.LoadArchiveFiles(bytes.NewReader(chartData)) 26 if err != nil { 27 return nil, errors.Wrapf(err, "Cannot load archived file for %s", chartName) 28 } 29 } else { 30 for _, name := range eCharts.AssetNames() { 31 fileNamePrefix := fmt.Sprintf("%s/", chartName) 32 fileNameReplaceRe, err := regexp.Compile(`^(` + fileNamePrefix + `)(.*$)`) 33 if err != nil { 34 return nil, errors.Wrapf(err, "Wrong chart name %s", chartName) 35 } 36 var chartFileName string 37 var chartFileData []byte 38 if strings.HasPrefix(name, fileNamePrefix) { 39 chartFileName = fileNameReplaceRe.ReplaceAllString(name, "$2") 40 chartFileData, err = eCharts.Asset(name) 41 if err != nil { 42 return nil, errors.Wrapf(err, "Failed to load chart file %s", name) 43 } 44 chartBufferedFile = append(chartBufferedFile, &loader.BufferedFile{ 45 Name: chartFileName, 46 Data: chartFileData, 47 }) 48 } 49 } 50 } 51 return loader.LoadFiles(chartBufferedFile) 52 }