func getReleaseOptions()

in pkg/safeguards/preprocessing/preprocessing_helpers.go [31:74]


func getReleaseOptions(chart *chart.Chart, vals map[string]interface{}, opt chartutil.ReleaseOptions, dirName string) (chartutil.Values, error) {
	// Extract release options from values
	var options chartutil.ReleaseOptions
	if opt.Name != "" && opt.Namespace != "" {
		options = opt
	} else {
		var releaseName string
		var releaseNamespace string
		if opt.Name != "" {
			releaseName = opt.Name
		} else {
			rName, ok := vals["releaseName"].(string)
			if !ok || rName == "" {
				releaseName = dirName
			} else {
				releaseName = rName
			}
		}
		if opt.Namespace != "" {
			releaseNamespace = opt.Namespace
		} else {
			rNamespace, ok := vals["releaseNamespace"].(string)
			if !ok || rNamespace == "" {
				releaseNamespace = dirName
			} else {
				releaseNamespace = rNamespace
			}
		}

		options = chartutil.ReleaseOptions{
			Name:      releaseName,
			Namespace: releaseNamespace,
		}
	}

	// Combine chart values with release options
	config := chartutil.Values(vals)
	mergedValues, err := chartutil.ToRenderValues(chart, config, options, nil)
	if err != nil {
		return nil, fmt.Errorf("failed to merge values: %s", err)
	}

	return mergedValues, nil
}