github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/build_registries.go (about) 1 package plan 2 3 import ( 4 regi "github.com/helmwave/helmwave/pkg/registry" 5 "github.com/helmwave/helmwave/pkg/release" 6 log "github.com/sirupsen/logrus" 7 "helm.sh/helm/v3/pkg/registry" 8 ) 9 10 func buildRegistriesMapTop(releases []release.Config) map[string][]release.Config { 11 m := make(map[string][]release.Config) 12 for _, rel := range releases { 13 if !registry.IsOCI(rel.Chart().Name) { 14 continue 15 } 16 17 m[rel.Repo()] = append(m[rel.Repo()], rel) 18 rel.Logger().Debug("🗄 This chart will download via OCI") 19 } 20 21 return m 22 } 23 24 func buildRegistries(m map[string][]release.Config, in []regi.Config) (out []regi.Config, err error) { 25 for reg, releases := range m { 26 rm := releaseNames(releases) 27 28 l := log.WithField("registry", reg) 29 l.WithField("releases", rm).Debug("🗄 found releases that depend on registries") 30 31 if index, found := regi.IndexOfHost(in, reg); found { 32 out = append(out, in[index]) 33 l.Info("🗄 registry has been added to the plan") 34 } else { 35 l.WithField("releases", rm).Warn("🗄 some releases depend on a registry that is not defined") 36 37 return nil, regi.NewNotFoundError(reg) 38 } 39 } 40 41 return out, nil 42 } 43 44 func (p *Plan) buildRegistries() (out []regi.Config, err error) { 45 return buildRegistries( 46 buildRegistriesMapTop(p.body.Releases), 47 p.body.Registries, 48 ) 49 }