github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/plan/build_values.go (about)

     1  package plan
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/helmwave/helmwave/pkg/helper"
     7  	"github.com/helmwave/helmwave/pkg/parallel"
     8  	"github.com/helmwave/helmwave/pkg/release"
     9  	log "github.com/sirupsen/logrus"
    10  )
    11  
    12  func (p *Plan) buildValues(ctx context.Context) error {
    13  	if err := p.ValidateValuesBuild(); err != nil {
    14  		return err
    15  	}
    16  
    17  	wg := parallel.NewWaitGroup()
    18  	wg.Add(len(p.body.Releases))
    19  
    20  	for _, rel := range p.body.Releases {
    21  		go func() {
    22  			defer wg.Done()
    23  
    24  			wg.ErrChan() <- p.buildReleaseValues(ctx, rel)
    25  		}()
    26  	}
    27  
    28  	return wg.Wait()
    29  }
    30  
    31  func (p *Plan) buildReleaseValues(ctx context.Context, rel release.Config) error {
    32  	err := rel.BuildValues(ctx, p.tmpDir, p.templater)
    33  	if err != nil {
    34  		log.Errorf("❌ %s values: %v", rel.Uniq(), err)
    35  
    36  		return err
    37  	} else {
    38  		vals := helper.SlicesMap(rel.Values(), func(v release.ValuesReference) string {
    39  			return v.Dst
    40  		})
    41  
    42  		if len(vals) == 0 {
    43  			rel.Logger().Info("🔨 no values provided")
    44  		} else {
    45  			log.WithField("release", rel.Uniq()).WithField("values", vals).Infof("✅ found %d values count", len(vals))
    46  		}
    47  	}
    48  
    49  	return nil
    50  }