@@ -21,7 +21,6 @@ import (
21
21
22
22
"github.com/argoproj/argo-cd/v2/pkg/apiclient/application"
23
23
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
24
- "github.com/miracl/conflate"
25
24
"gopkg.in/yaml.v2"
26
25
)
27
26
@@ -416,9 +415,13 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
416
415
}
417
416
418
417
if strings .HasPrefix (app .Annotations [common .WriteBackTargetAnnotation ], common .HelmPrefix ) {
419
- images := GetImagesFromApplication (app )
418
+ params := make (map [interface {}]interface {})
419
+ err = yaml .Unmarshal (originalData , & params )
420
+ if err != nil {
421
+ return nil , err
422
+ }
420
423
421
- var helmValues string
424
+ images := GetImagesFromApplication ( app )
422
425
for _ , c := range images {
423
426
image := c .ImageAlias
424
427
if image == "" {
@@ -442,17 +445,11 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
442
445
return nil , fmt .Errorf ("%s parameter not found" , helmAnnotationParamVersion )
443
446
}
444
447
445
- // Build string with YAML format to merge with originalData values
446
- helmValues += fmt .Sprintf ("%s: %s\n %s: %s\n " , helmAnnotationParamName , helmParamName .Value , helmAnnotationParamVersion , helmParamVersion .Value )
447
- }
448
-
449
- var mergedParams * conflate.Conflate
450
- mergedParams , err = conflate .FromData (originalData , []byte (helmValues ))
451
- if err != nil {
452
- return nil , err
448
+ setNestedField (params , helmAnnotationParamName , helmParamName .Value )
449
+ setNestedField (params , helmAnnotationParamVersion , helmParamVersion .Value )
453
450
}
454
451
455
- override , err = mergedParams . MarshalYAML ( )
452
+ override , err = yaml . Marshal ( params )
456
453
} else {
457
454
var params helmOverride
458
455
newParams := helmOverride {
@@ -486,6 +483,18 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
486
483
return override , nil
487
484
}
488
485
486
+ func setNestedField (data map [interface {}]interface {}, fieldPath string , newValue string ) {
487
+ fields := strings .Split (fieldPath , "." )
488
+ lastFieldIndex := len (fields ) - 1
489
+ for i , name := range fields {
490
+ if i == lastFieldIndex {
491
+ data [name ] = newValue
492
+ } else {
493
+ data = data [name ].(map [interface {}]interface {})
494
+ }
495
+ }
496
+ }
497
+
489
498
func mergeHelmOverride (t * helmOverride , o * helmOverride ) {
490
499
for _ , param := range o .Helm .Parameters {
491
500
idx := slices .IndexFunc (t .Helm .Parameters , func (tp v1alpha1.HelmParameter ) bool { return tp .Name == param .Name })
0 commit comments