diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 62e2b369aa..53fc15d821 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -621,31 +621,8 @@ func setJsonnetOpt(src *argoappv1.ApplicationSource, tlaParameters []string, cod if src.Directory == nil { src.Directory = &argoappv1.ApplicationSourceDirectory{} } - - if len(tlaParameters) != 0 { - tlas := make([]argoappv1.JsonnetVar, len(tlaParameters)) - for index, paramStr := range tlaParameters { - parts := strings.SplitN(paramStr, "=", 2) - if len(parts) != 2 { - log.Fatalf("Expected parameter of the form: param=value. Received: %s", paramStr) - break - } - tlas[index] = argoappv1.JsonnetVar{ - Name: parts[0], - Value: parts[1], - Code: code} - } - var existingTLAs []argoappv1.JsonnetVar - for i := range src.Directory.Jsonnet.TLAs { - if src.Directory.Jsonnet.TLAs[i].Code != code { - existingTLAs = append(existingTLAs, src.Directory.Jsonnet.TLAs[i]) - } - } - src.Directory.Jsonnet.TLAs = append(existingTLAs, tlas...) - } - - if src.Directory.IsZero() { - src.Directory = nil + for _, j := range tlaParameters { + src.Directory.Jsonnet.TLAs = append(src.Directory.Jsonnet.TLAs, argoappv1.NewJsonnetVar(j, code)) } } diff --git a/cmd/argocd/commands/app_test.go b/cmd/argocd/commands/app_test.go index a44d4e24f8..a967561754 100644 --- a/cmd/argocd/commands/app_test.go +++ b/cmd/argocd/commands/app_test.go @@ -35,3 +35,20 @@ func Test_setHelmOpt(t *testing.T) { assert.Equal(t, []v1alpha1.HelmParameter{{Name: "foo", Value: "bar", ForceString: true}}, src.Helm.Parameters) }) } + +func Test_setJsonnetOpt(t *testing.T) { + t.Run("TlaSets", func(t *testing.T) { + src := v1alpha1.ApplicationSource{} + setJsonnetOpt(&src, []string{"foo=bar"}, false) + assert.Equal(t, []v1alpha1.JsonnetVar{{Name: "foo", Value: "bar"}}, src.Directory.Jsonnet.TLAs) + setJsonnetOpt(&src, []string{"bar=baz"}, false) + assert.Equal(t, []v1alpha1.JsonnetVar{{Name: "foo", Value: "bar"}, {Name: "bar", Value: "baz"}}, src.Directory.Jsonnet.TLAs) + }) + t.Run("ExtSets", func(t *testing.T) { + src := v1alpha1.ApplicationSource{} + setJsonnetOptExtVar(&src, []string{"foo=bar"}, false) + assert.Equal(t, []v1alpha1.JsonnetVar{{Name: "foo", Value: "bar"}}, src.Directory.Jsonnet.ExtVars) + setJsonnetOptExtVar(&src, []string{"bar=baz"}, false) + assert.Equal(t, []v1alpha1.JsonnetVar{{Name: "foo", Value: "bar"}, {Name: "bar", Value: "baz"}}, src.Directory.Jsonnet.ExtVars) + }) +}