From a8cf783874202d7ae9188c5308f2f58d5586b0b2 Mon Sep 17 00:00:00 2001 From: Meir Gabay Date: Thu, 30 Jul 2020 18:12:43 +0300 Subject: [PATCH] eval env vars --- plugin.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/plugin.go b/plugin.go index 511632f..331a6a1 100644 --- a/plugin.go +++ b/plugin.go @@ -372,9 +372,35 @@ func getTfoutPath() string { return fmt.Sprintf("%s.plan.tfout", terraformDataDir) } +func getStrBetween(value string, a string, b string) string { + // Get substring between two strings. + posFirst := strings.Index(value, a) + if posFirst == -1 { + return "" + } + posLast := strings.Index(value, b) + if posLast == -1 { + return "" + } + posFirstAdjusted := posFirst + len(a) + if posFirstAdjusted >= posLast { + return "" + } + return value[posFirstAdjusted:posLast] +} + func vars(vs map[string]string) []string { var args []string for k, v := range vs { + isEnvVar, err := regexp.Match(`^\${.*}$`, []byte(v)) + if err != nil { + fmt.Println(err) + } + if isEnvVar { + envVarName := getStrBetween(v, "${", "}") + v = os.Getenv(envVarName) + fmt.Println(v) + } args = append(args, "-var", fmt.Sprintf("%s=%s", k, v)) } return args