diff --git a/DOCS.md b/DOCS.md index b4914a2..82ca0f5 100644 --- a/DOCS.md +++ b/DOCS.md @@ -229,6 +229,9 @@ init_options.lock init_options.lock-timeout : Duration to wait for a state lock. Default `0s`. +init_options.refresh +: Update the state for each resource prior to planning and applying. Default `true`. + fmt_options : contains the configuration for the fmt action. diff --git a/plugin.go b/plugin.go index 511632f..fc65e7f 100644 --- a/plugin.go +++ b/plugin.go @@ -48,6 +48,7 @@ type ( BackendConfig []string `json:"backend-config"` Lock *bool `json:"lock"` LockTimeout string `json:"lock-timeout"` + Refresh *bool `json:"refresh"` } // FmtOptions fmt options for the Terraform's fmt command @@ -234,6 +235,11 @@ func initCommand(config InitOptions) *exec.Cmd { args = append(args, fmt.Sprintf("-lock-timeout=%s", config.LockTimeout)) } + // True is default in TF + if config.Refresh != nil { + args = append(args, fmt.Sprintf("-refresh=%t", *config.Refresh)) + } + // Fail Terraform execution on prompt args = append(args, "-input=false") @@ -270,6 +276,9 @@ func tfApply(config Config) *exec.Cmd { if config.InitOptions.LockTimeout != "" { args = append(args, fmt.Sprintf("-lock-timeout=%s", config.InitOptions.LockTimeout)) } + if config.InitOptions.Refresh != nil { + args = append(args, fmt.Sprintf("-refresh=%t", *config.InitOptions.Refresh)) + } args = append(args, getTfoutPath()) return exec.Command( @@ -328,6 +337,9 @@ func tfPlan(config Config, destroy bool) *exec.Cmd { if config.InitOptions.LockTimeout != "" { args = append(args, fmt.Sprintf("-lock-timeout=%s", config.InitOptions.LockTimeout)) } + if config.InitOptions.Refresh != nil { + args = append(args, fmt.Sprintf("-refresh=%t", *config.InitOptions.Refresh)) + } return exec.Command( "terraform", args...,