MCPcopy
hub / github.com/helmfile/helmfile / generateTemporaryReleaseValuesFilesCore

Method generateTemporaryReleaseValuesFilesCore

pkg/state/state.go:4539–4643  ·  view source on GitHub ↗

generateTemporaryReleaseValuesFilesCore is the shared implementation for generating temporary values files. renderStringValue is called for each string value entry after the file path has been resolved.

(release *ReleaseSpec, values []any, renderStringValue func(path string) ([]byte, error))

Source from the content-addressed store, hash-verified

4537// generateTemporaryReleaseValuesFilesCore is the shared implementation for generating temporary values files.
4538// renderStringValue is called for each string value entry after the file path has been resolved.
4539func (st *HelmState) generateTemporaryReleaseValuesFilesCore(release *ReleaseSpec, values []any, renderStringValue func(path string) ([]byte, error)) ([]string, error) {
4540 generatedFiles := []string{}
4541
4542 for _, value := range values {
4543 switch typedValue := value.(type) {
4544 case string:
4545 paths, skip, err := st.storage().resolveFile(st.getReleaseMissingFileHandler(release), "values", typedValue, st.getReleaseMissingFileHandlerConfig(release).resolveFileOptions()...)
4546 if err != nil {
4547 return generatedFiles, err
4548 }
4549 if skip {
4550 continue
4551 }
4552
4553 if len(paths) > 1 {
4554 return generatedFiles, fmt.Errorf("glob patterns in release values and secrets is not supported yet. please submit a feature request if necessary")
4555 }
4556 path := paths[0]
4557
4558 yamlBytes, err := renderStringValue(path)
4559 if err != nil {
4560 return generatedFiles, fmt.Errorf("failed to render values files \"%s\": %v", typedValue, err)
4561 }
4562
4563 if err := func() error {
4564 valfile, err := createTempValuesFile(release, yamlBytes)
4565 if err != nil {
4566 return err
4567 }
4568 defer func() {
4569 _ = valfile.Close()
4570 }()
4571
4572 if _, err := valfile.Write(yamlBytes); err != nil {
4573 return fmt.Errorf("failed to write %s: %v", valfile.Name(), err)
4574 }
4575
4576 st.logger.Debugf("Successfully generated the value file from %s to %s", path, valfile.Name())
4577
4578 generatedFiles = append(generatedFiles, valfile.Name())
4579
4580 return nil
4581 }(); err != nil {
4582 return generatedFiles, err
4583 }
4584 case map[any]any:
4585 strMap, err := maputil.CastKeysToStrings(typedValue)
4586 if err != nil {
4587 return generatedFiles, err
4588 }
4589 if err := func() error {
4590 valfile, err := createTempValuesFile(release, strMap)
4591 if err != nil {
4592 return err
4593 }
4594 defer func() {
4595 _ = valfile.Close()
4596 }()

Calls 12

storageMethod · 0.95
CloseMethod · 0.95
EncodeMethod · 0.95
CastKeysToStringsFunction · 0.92
NewEncoderFunction · 0.92
createTempValuesFileFunction · 0.85
resolveFileMethod · 0.80
resolveFileOptionsMethod · 0.80
NameMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected