MCPcopy Index your code
hub / github.com/helm/helm / MergeValues

Method MergeValues

pkg/cli/values/options.go:45–116  ·  view source on GitHub ↗

MergeValues merges values from files specified via -f/--values and directly via --set-json, --set, --set-string, or --set-file, marshaling them to YAML

(p getter.Providers)

Source from the content-addressed store, hash-verified

43// MergeValues merges values from files specified via -f/--values and directly
44// via --set-json, --set, --set-string, or --set-file, marshaling them to YAML
45func (opts *Options) MergeValues(p getter.Providers) (map[string]any, error) {
46 base := map[string]any{}
47
48 // User specified a values files via -f/--values
49 for _, filePath := range opts.ValueFiles {
50 raw, err := readFile(filePath, p)
51 if err != nil {
52 return nil, err
53 }
54 currentMap, err := loader.LoadValues(bytes.NewReader(raw))
55 if err != nil {
56 return nil, fmt.Errorf("failed to parse %s: %w", filePath, err)
57 }
58 // Merge with the previous map
59 base = loader.MergeMaps(base, currentMap)
60 }
61
62 // User specified a value via --set-json
63 for _, value := range opts.JSONValues {
64 trimmedValue := strings.TrimSpace(value)
65 if len(trimmedValue) > 0 && trimmedValue[0] == '{' {
66 // If value is JSON object format, parse it as map
67 var jsonMap map[string]any
68 if err := json.Unmarshal([]byte(trimmedValue), &jsonMap); err != nil {
69 return nil, fmt.Errorf("failed parsing --set-json data JSON: %s", value)
70 }
71 base = loader.MergeMaps(base, jsonMap)
72 } else {
73 // Otherwise, parse it as key=value format
74 if err := strvals.ParseJSON(value, base); err != nil {
75 return nil, fmt.Errorf("failed parsing --set-json data %s", value)
76 }
77 }
78 }
79
80 // User specified a value via --set
81 for _, value := range opts.Values {
82 if err := strvals.ParseInto(value, base); err != nil {
83 return nil, fmt.Errorf("failed parsing --set data: %w", err)
84 }
85 }
86
87 // User specified a value via --set-string
88 for _, value := range opts.StringValues {
89 if err := strvals.ParseIntoString(value, base); err != nil {
90 return nil, fmt.Errorf("failed parsing --set-string data: %w", err)
91 }
92 }
93
94 // User specified a value via --set-file
95 for _, value := range opts.FileValues {
96 reader := func(rs []rune) (any, error) {
97 bytes, err := readFile(string(rs), p)
98 if err != nil {
99 return nil, err
100 }
101 return string(bytes), err
102 }

Callers 5

newPackageCmdFunction · 0.95
newLintCmdFunction · 0.95
newUpgradeCmdFunction · 0.95
TestMergeValuesCLIFunction · 0.80
runInstallFunction · 0.80

Calls 8

LoadValuesFunction · 0.92
MergeMapsFunction · 0.92
ParseJSONFunction · 0.92
ParseIntoFunction · 0.92
ParseIntoStringFunction · 0.92
ParseIntoFileFunction · 0.92
ParseLiteralIntoFunction · 0.92
readFileFunction · 0.85

Tested by 1

TestMergeValuesCLIFunction · 0.64