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  }