mirror of https://github.com/hashicorp/terraform
parent
272632ced0
commit
3534470ca3
@ -0,0 +1,42 @@
|
||||
package command
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// FlagVar is a flag.Value implementation for parsing user variables
|
||||
// from the command-line in the format of '-var key=value'.
|
||||
type FlagVar map[string]string
|
||||
|
||||
func (v *FlagVar) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (v *FlagVar) Set(raw string) error {
|
||||
idx := strings.Index(raw, "=")
|
||||
if idx == -1 {
|
||||
return fmt.Errorf("No '=' value in arg: %s", raw)
|
||||
}
|
||||
|
||||
if *v == nil {
|
||||
*v = make(map[string]string)
|
||||
}
|
||||
|
||||
key, value := raw[0:idx], raw[idx+1:]
|
||||
(*v)[key] = value
|
||||
return nil
|
||||
}
|
||||
|
||||
// FlagVarFile is a flag.Value implementation for parsing user variables
|
||||
// from the command line in the form of files. i.e. '-var-file=foo'
|
||||
type FlagVarFile map[string]string
|
||||
|
||||
func (v *FlagVarFile) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (v *FlagVarFile) Set(raw string) error {
|
||||
// TODO
|
||||
return nil
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package command
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFlagVar_impl(t *testing.T) {
|
||||
var _ flag.Value = new(FlagVar)
|
||||
}
|
||||
|
||||
func TestFlagVar(t *testing.T) {
|
||||
cases := []struct {
|
||||
Input string
|
||||
Output map[string]string
|
||||
Error bool
|
||||
}{
|
||||
{
|
||||
"key=value",
|
||||
map[string]string{"key": "value"},
|
||||
false,
|
||||
},
|
||||
|
||||
{
|
||||
"key=",
|
||||
map[string]string{"key": ""},
|
||||
false,
|
||||
},
|
||||
|
||||
{
|
||||
"key=foo=bar",
|
||||
map[string]string{"key": "foo=bar"},
|
||||
false,
|
||||
},
|
||||
|
||||
{
|
||||
"key",
|
||||
nil,
|
||||
true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
f := new(FlagVar)
|
||||
err := f.Set(tc.Input)
|
||||
if (err != nil) != tc.Error {
|
||||
t.Fatalf("bad error. Input: %#v", tc.Input)
|
||||
}
|
||||
|
||||
actual := map[string]string(*f)
|
||||
if !reflect.DeepEqual(actual, tc.Output) {
|
||||
t.Fatalf("bad: %#v", actual)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
variable "foo" {}
|
||||
|
||||
resource "test_instance" "foo" {
|
||||
value = "${var.foo}"
|
||||
}
|
||||
@ -0,0 +1,5 @@
|
||||
variable "foo" {}
|
||||
|
||||
resource "test_instance" "foo" {
|
||||
value = "${var.foo}"
|
||||
}
|
||||
@ -0,0 +1,7 @@
|
||||
variable "foo" {}
|
||||
|
||||
provider "test" {
|
||||
value = "${var.foo}"
|
||||
}
|
||||
|
||||
resource "test_instance" "foo" {}
|
||||
Loading…
Reference in new issue