helmfile/pkg/maputil
Aditya Menon 17cadf2a8c
fix: use separate CLIOverrides field for element-by-element array merging
The previous approach using ArrayMergeStrategySparse detection didn't work
for --state-values-set array[0]=value because setting index 0 produces no
nils in the array.

This fix adds a CLIOverrides field to Environment that keeps CLI values
separate from layer values. CLI overrides are merged last using
ArrayMergeStrategyMerge (always element-by-element), while layer values
use the default strategy (arrays replace).

This ensures:
- --state-values-set array[0]=x only changes index 0, preserving other elements
- Layer/environment file arrays still replace base arrays entirely
- Issue #2281 fix is preserved (--state-values-set array[1].field=x works)

Signed-off-by: Aditya Menon <amenon@canarytechnologies.com>
2026-01-17 08:07:54 +05:30
..
maputil.go fix: use separate CLIOverrides field for element-by-element array merging 2026-01-17 08:07:54 +05:30
maputil_test.go fix: array merge regression - layer arrays now replace defaults (#2353) 2026-01-17 07:27:52 +05:30