add logger, remove env from constructor
diff --git a/tfexec/terraform.go b/tfexec/terraform.go index d501889..9ee9501 100644 --- a/tfexec/terraform.go +++ b/tfexec/terraform.go
@@ -5,6 +5,8 @@ "context" "encoding/json" "fmt" + "io/ioutil" + "log" "os" "strings" @@ -16,12 +18,13 @@ workingDir string execVersion string env []string + logger *log.Logger } // NewTerraform returns a Terraform struct with default values for all fields. // If a blank execPath is supplied, NewTerraform will attempt to locate an // appropriate binary on the system PATH. -func NewTerraform(workingDir string, execPath string, env map[string]string) (*Terraform, error) { +func NewTerraform(workingDir string, execPath string) (*Terraform, error) { var err error if workingDir == "" { return nil, fmt.Errorf("Terraform cannot be initialised with empty workdir") @@ -41,7 +44,8 @@ tf := Terraform{ execPath: execPath, workingDir: workingDir, - env: getTerraformEnv(env), + env: os.Environ(), + logger: log.New(ioutil.Discard, "", 0), } execVersion, err := tf.version() @@ -54,27 +58,25 @@ return &tf, nil } -func getTerraformEnv(env map[string]string) []string { - var ret []string - - if env == nil { - for _, e := range os.Environ() { - ret = append(ret, e) - } - } +func (tf *Terraform) SetEnv(env map[string]string) { + var tfenv []string // always propagate CHECKPOINT_DISABLE env var unless it is // explicitly overridden c := os.Getenv("CHECKPOINT_DISABLE") if c != "" { - ret = append(ret, "CHECKPOINT_DISABLE="+c) + tfenv = append(tfenv, "CHECKPOINT_DISABLE="+c) } for k, v := range env { - ret = append(ret, k+"="+v) + tfenv = append(tfenv, k+"="+v) } - return ret + tf.env = tfenv +} + +func (tf *Terraform) SetLogger(logger *log.Logger) { + tf.logger = logger } func (tf *Terraform) version() (string, error) {
diff --git a/tfexec/terraform_cmd.go b/tfexec/terraform_cmd.go index d42e28e..2e50907 100644 --- a/tfexec/terraform_cmd.go +++ b/tfexec/terraform_cmd.go
@@ -14,6 +14,8 @@ cmd.Env = env cmd.Dir = tf.workingDir + tf.logger.Printf("Terraform command: %s", cmd.String()) + return cmd }
diff --git a/tfexec/terraform_test.go b/tfexec/terraform_test.go index c7a6a79..b8216ff 100644 --- a/tfexec/terraform_test.go +++ b/tfexec/terraform_test.go
@@ -23,7 +23,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -55,7 +55,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -87,7 +87,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -107,7 +107,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -139,7 +139,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -180,7 +180,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -213,7 +213,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -234,7 +234,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -255,7 +255,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -309,7 +309,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) } @@ -331,7 +331,7 @@ td := testTempDir(t) defer os.RemoveAll(td) - tf, err := NewTerraform(td, "", nil) + tf, err := NewTerraform(td, "") if err != nil { t.Fatal(err) }