|
|
@ -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 |
|
|
|