WriteReleasesValues writes values files for releases
(helm helmexec.Interface, additionalValues []string, opt ...WriteValuesOpt)
| 1428 | |
| 1429 | // WriteReleasesValues writes values files for releases |
| 1430 | func (st *HelmState) WriteReleasesValues(helm helmexec.Interface, additionalValues []string, opt ...WriteValuesOpt) []error { |
| 1431 | opts := &WriteValuesOpts{} |
| 1432 | for _, o := range opt { |
| 1433 | o.Apply(opts) |
| 1434 | } |
| 1435 | |
| 1436 | for i := range st.Releases { |
| 1437 | release := &st.Releases[i] |
| 1438 | |
| 1439 | if !release.Desired() { |
| 1440 | continue |
| 1441 | } |
| 1442 | |
| 1443 | st.ApplyOverrides(release) |
| 1444 | |
| 1445 | generatedFiles, err := st.generateValuesFiles(helm, release, i) |
| 1446 | if err != nil { |
| 1447 | return []error{err} |
| 1448 | } |
| 1449 | |
| 1450 | if !opts.SkipCleanup { |
| 1451 | defer st.removeFiles(generatedFiles) |
| 1452 | } |
| 1453 | |
| 1454 | for _, value := range additionalValues { |
| 1455 | valfile, err := filepath.Abs(value) |
| 1456 | if err != nil { |
| 1457 | return []error{err} |
| 1458 | } |
| 1459 | |
| 1460 | if _, err := os.Stat(valfile); os.IsNotExist(err) { |
| 1461 | return []error{err} |
| 1462 | } |
| 1463 | } |
| 1464 | |
| 1465 | outputValuesFile, err := st.GenerateOutputFilePath(release, opts.OutputFileTemplate) |
| 1466 | if err != nil { |
| 1467 | return []error{err} |
| 1468 | } |
| 1469 | |
| 1470 | if err := os.MkdirAll(filepath.Dir(outputValuesFile), 0755); err != nil { |
| 1471 | return []error{err} |
| 1472 | } |
| 1473 | |
| 1474 | st.logger.Infof("Writing values file %s", outputValuesFile) |
| 1475 | |
| 1476 | merged := map[string]interface{}{} |
| 1477 | |
| 1478 | for _, f := range append(generatedFiles, additionalValues...) { |
| 1479 | src := map[string]interface{}{} |
| 1480 | |
| 1481 | srcBytes, err := st.readFile(f) |
| 1482 | if err != nil { |
| 1483 | return []error{fmt.Errorf("reading %s: %w", f, err)} |
| 1484 | } |
| 1485 | |
| 1486 | if err := yaml.Unmarshal(srcBytes, &src); err != nil { |
| 1487 | return []error{fmt.Errorf("unmarshalling yaml %s: %w", f, err)} |
no test coverage detected