From 486be2ab126dd4620bfbe8fd278095e7d4d70470 Mon Sep 17 00:00:00 2001 From: tomasmik Date: Fri, 22 Dec 2023 11:28:18 +0200 Subject: [PATCH] Allow to use `=` in the actual variable definition Signed-off-by: tomasmik --- internal/cmd/stack/local_preview.go | 37 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/internal/cmd/stack/local_preview.go b/internal/cmd/stack/local_preview.go index 858b6ca..7431ab3 100644 --- a/internal/cmd/stack/local_preview.go +++ b/internal/cmd/stack/local_preview.go @@ -148,35 +148,34 @@ type EnvironmentVariable struct { Value graphql.String `json:"value"` } -func parseEnvVariablesForLocalPreview(cliCtx *cli.Context) ([]EnvironmentVariable, error) { - envVars := make([]EnvironmentVariable, 0) - - parseFn := func(ev string, mutateKey func(string) string) error { - parts := strings.Split(ev, "=") - if len(parts) != 2 { - return fmt.Errorf("invalid environment variable %q, must be in the form of KEY=VALUE", ev) - } +func parseEnvVar(env string, envVars []EnvironmentVariable, mutateKey func(string) string) ([]EnvironmentVariable, error) { + parts := strings.SplitN(env, "=", 2) + if len(parts) != 2 { + return envVars, fmt.Errorf("invalid environment variable %q, must be in the form of KEY=VALUE", env) + } - if mutateKey != nil { - parts[0] = mutateKey(parts[0]) - } + if mutateKey != nil { + parts[0] = mutateKey(parts[0]) + } - envVars = append(envVars, EnvironmentVariable{ - Key: graphql.String(parts[0]), - Value: graphql.String(parts[1]), - }) + return append(envVars, EnvironmentVariable{ + Key: graphql.String(parts[0]), + Value: graphql.String(parts[1]), + }), nil +} - return nil - } +func parseEnvVariablesForLocalPreview(cliCtx *cli.Context) ([]EnvironmentVariable, error) { + envVars := make([]EnvironmentVariable, 0) + var err error for _, ev := range cliCtx.StringSlice(flagOverrideEnvVars.Name) { - if err := parseFn(ev, nil); err != nil { + if envVars, err = parseEnvVar(ev, envVars, nil); err != nil { return nil, err } } for _, ev := range cliCtx.StringSlice(flagOverrideEnvVarsTF.Name) { - if err := parseFn(ev, func(s string) string { + if envVars, err = parseEnvVar(ev, envVars, func(s string) string { return strings.Join([]string{"TF_", s}, "") }); err != nil { return nil, err