blob: 48a97c1b72100382cf8558fee6c5e1888c8dacd8 [file] [log] [blame]
package tfexec
import (
"context"
"os/exec"
tfjson "github.com/hashicorp/terraform-json"
)
type statePullConfig struct {
reattachInfo ReattachInfo
}
var defaultStatePullConfig = statePullConfig{}
func (tf *Terraform) StatePull(ctx context.Context) (*tfjson.State, error) {
c := defaultStatePullConfig
mergeEnv := map[string]string{}
if c.reattachInfo != nil {
reattachStr, err := c.reattachInfo.marshalString()
if err != nil {
return nil, err
}
mergeEnv[reattachEnvVar] = reattachStr
}
cmd := tf.statePullCmd(ctx)
var ret tfjson.State
ret.UseJSONNumber(true)
err := tf.runTerraformCmdJSON(ctx, cmd, &ret)
if err != nil {
return nil, err
}
err = ret.Validate()
if err != nil {
return nil, err
}
return &ret, nil
}
func (tf *Terraform) statePullCmd(ctx context.Context) *exec.Cmd {
args := []string{"state", "pull"}
return tf.buildTerraformCmd(ctx, nil, args...)
}