From 6bd8277e2d1d034a5cc0ccd228199b3033a8c348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarek=20Marc=C3=A9?= Date: Wed, 16 Oct 2024 19:56:01 +0200 Subject: [PATCH] Allow same deps with same name but different repo. Fix #7413 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tarek Marcé --- internal/resolver/resolver.go | 4 ++++ pkg/downloader/manager.go | 12 ++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/resolver/resolver.go b/internal/resolver/resolver.go index 13dcd2ce9..4ebdb0801 100644 --- a/internal/resolver/resolver.go +++ b/internal/resolver/resolver.go @@ -108,6 +108,10 @@ func (r *Resolver) Resolve(reqs []*chart.Dependency, repoNames map[string]string } repoName := repoNames[d.Name] + if d.Alias != "" { + repoName = repoNames[d.Alias] + } + // if the repository was not defined, but the dependency defines a repository url, bypass the cache if repoName == "" && d.Repository != "" { locked[i] = &chart.Dependency{ diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 348c78edb..eaaf00c1c 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -572,6 +572,10 @@ func (m *Manager) resolveRepoNames(deps []*chart.Dependency) (map[string]string, // by Helm. missing := []string{} for _, dd := range deps { + chartName := dd.Name + if dd.Alias != "" { + chartName = dd.Alias + } // Don't map the repository, we don't need to download chart from charts directory if dd.Repository == "" { continue @@ -585,12 +589,12 @@ func (m *Manager) resolveRepoNames(deps []*chart.Dependency) (map[string]string, if m.Debug { fmt.Fprintf(m.Out, "Repository from local path: %s\n", dd.Repository) } - reposMap[dd.Name] = dd.Repository + reposMap[chartName] = dd.Repository continue } if registry.IsOCI(dd.Repository) { - reposMap[dd.Name] = dd.Repository + reposMap[chartName] = dd.Repository continue } @@ -601,11 +605,11 @@ func (m *Manager) resolveRepoNames(deps []*chart.Dependency) (map[string]string, (strings.HasPrefix(dd.Repository, "alias:") && strings.TrimPrefix(dd.Repository, "alias:") == repo.Name) { found = true dd.Repository = repo.URL - reposMap[dd.Name] = repo.Name + reposMap[chartName] = repo.Name break } else if urlutil.Equal(repo.URL, dd.Repository) { found = true - reposMap[dd.Name] = repo.Name + reposMap[chartName] = repo.Name break } }