command: add env var equivalent to -input arg

Setting TF_INPUT has the equivalent effect of setting the flag.
I got sick of specifying this when iterating on TF config locally.
This commit is contained in:
Paul Hinze 2015-04-30 09:59:14 -05:00
parent 1ad9cb261c
commit 5f1ea7fccc
2 changed files with 50 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import (
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
"strconv"
"github.com/hashicorp/terraform/config/module" "github.com/hashicorp/terraform/config/module"
"github.com/hashicorp/terraform/state" "github.com/hashicorp/terraform/state"
@ -165,6 +166,13 @@ func (m *Meta) DataDir() string {
return dataDir return dataDir
} }
const (
// InputModeEnvVar is the environment variable that, if set to "false" or
// "0", causes terraform commands to behave as if the `-input=false` flag was
// specified.
InputModeEnvVar = "TF_INPUT"
)
// InputMode returns the type of input we should ask for in the form of // InputMode returns the type of input we should ask for in the form of
// terraform.InputMode which is passed directly to Context.Input. // terraform.InputMode which is passed directly to Context.Input.
func (m *Meta) InputMode() terraform.InputMode { func (m *Meta) InputMode() terraform.InputMode {
@ -172,6 +180,14 @@ func (m *Meta) InputMode() terraform.InputMode {
return 0 return 0
} }
if envVar := os.Getenv(InputModeEnvVar); envVar != "" {
if v, err := strconv.ParseBool(envVar); err == nil {
if !v {
return 0
}
}
}
var mode terraform.InputMode var mode terraform.InputMode
mode |= terraform.InputModeProvider mode |= terraform.InputModeProvider
if len(m.variables) == 0 && m.autoKey == "" { if len(m.variables) == 0 && m.autoKey == "" {

View File

@ -70,6 +70,40 @@ func TestMetaInputMode(t *testing.T) {
} }
} }
func TestMetaInputMode_envVar(t *testing.T) {
test = false
defer func() { test = true }()
old := os.Getenv(InputModeEnvVar)
defer os.Setenv(InputModeEnvVar, old)
m := new(Meta)
args := []string{}
fs := m.flagSet("foo")
if err := fs.Parse(args); err != nil {
t.Fatalf("err: %s", err)
}
off := terraform.InputMode(0)
on := terraform.InputModeStd | terraform.InputModeVarUnset
cases := []struct {
EnvVar string
Expected terraform.InputMode
}{
{"false", off},
{"0", off},
{"true", on},
{"1", on},
}
for _, tc := range cases {
os.Setenv(InputModeEnvVar, tc.EnvVar)
if m.InputMode() != tc.Expected {
t.Fatalf("expected InputMode: %#v, got: %#v", tc.Expected, m.InputMode())
}
}
}
func TestMetaInputMode_disable(t *testing.T) { func TestMetaInputMode_disable(t *testing.T) {
test = false test = false
defer func() { test = true }() defer func() { test = true }()