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
}