From 8d660a96a0047f61e4c145e9f6e65f3b548e3e6f Mon Sep 17 00:00:00 2001 From: Karuppiah Natarajan Date: Tue, 30 Jul 2019 22:54:40 +0530 Subject: [PATCH] Allow missing trailing '/' in --repo url Signed-off-by: Karuppiah Natarajan Co-authored-by: Nandhagopal Ezhilmaran --- pkg/engine/engine.go | 1 + pkg/repo/chartrepo.go | 2 ++ pkg/repo/chartrepo_test.go | 8 ++++++++ 3 files changed, 11 insertions(+) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 2c7ed9fe8..353d4c76b 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -83,6 +83,7 @@ type renderable struct { const warnStartDelim = "HELM_ERR_START" const warnEndDelim = "HELM_ERR_END" + var warnRegex = regexp.MustCompile(warnStartDelim + `(.*)` + warnEndDelim) func warnWrap(warn string) string { diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index 4eac81e2b..81d7f8ec9 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -267,5 +267,7 @@ func ResolveReferenceURL(baseURL, refURL string) (string, error) { return "", errors.Wrapf(err, "failed to parse %s as URL", refURL) } + // We need a trailing slash for ResolveReference to work, but make sure there isn't already one + parsedBaseURL.Path = strings.TrimSuffix(parsedBaseURL.Path, "/") + "/" return parsedBaseURL.ResolveReference(parsedRefURL).String(), nil } diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index df624cfca..5cbc8833b 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -348,6 +348,14 @@ func TestResolveReferenceURL(t *testing.T) { t.Errorf("%s", chartURL) } + chartURL, err = ResolveReferenceURL("http://localhost:8123/charts-with-no-trailing-slash", "nginx-0.2.0.tgz") + if err != nil { + t.Errorf("%s", err) + } + if chartURL != "http://localhost:8123/charts-with-no-trailing-slash/nginx-0.2.0.tgz" { + t.Errorf("%s", chartURL) + } + chartURL, err = ResolveReferenceURL("http://localhost:8123", "https://kubernetes-charts.storage.googleapis.com/nginx-0.2.0.tgz") if err != nil { t.Errorf("%s", err)