From a8a9594b933ed6d884b3f052d721c5b3c5be6a93 Mon Sep 17 00:00:00 2001 From: Justin Walz Date: Wed, 7 Oct 2020 04:25:22 -0700 Subject: [PATCH] fix(helm): Check prior vendoring of helm charts --- pkg/helm/charts.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/helm/charts.go b/pkg/helm/charts.go index 22f3c19bf..37eb1d1a3 100644 --- a/pkg/helm/charts.go +++ b/pkg/helm/charts.go @@ -93,6 +93,13 @@ func (c Charts) Vendor() error { log.Println("Pulling Charts ...") for _, r := range c.Manifest.Requires { + chartName := parseReqName(r.Chart) + chartPath := filepath.Join(dir, chartName) + if _, err := os.Stat(chartPath); err == nil { + log.Printf(" %s@%s exists", r.Chart, r.Version.String()) + continue + } + err := c.Helm.Pull(r.Chart, r.Version.String(), PullOpts{ Destination: dir, Opts: Opts{Repositories: c.Manifest.Repositories}, @@ -101,7 +108,7 @@ func (c Charts) Vendor() error { return err } - log.Printf(" %s@%s", r.Chart, r.Version.String()) + log.Printf(" %s@%s downloaded", r.Chart, r.Version.String()) } return nil @@ -199,3 +206,10 @@ func parseReq(s string) (*Requirement, error) { Version: *ver, }, nil } + +// parseReqName parses a name from a string of the format `repo/name` +func parseReqName(s string) string { + elems := strings.Split(s, "/") + name := elems[1] + return name +}