github.com/recobe182/terraform@v0.8.5-0.20170117231232-49ab22a935b7/helper/variables/flag.go (about)

     1  package variables
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  // Flag a flag.Value implementation for parsing user variables
     9  // from the command-line in the format of '-var key=value', where value is
    10  // a type intended for use as a Terraform variable.
    11  type Flag map[string]interface{}
    12  
    13  func (v *Flag) String() string {
    14  	return ""
    15  }
    16  
    17  func (v *Flag) Set(raw string) error {
    18  	idx := strings.Index(raw, "=")
    19  	if idx == -1 {
    20  		return fmt.Errorf("No '=' value in arg: %s", raw)
    21  	}
    22  
    23  	key, input := raw[0:idx], raw[idx+1:]
    24  
    25  	// Trim the whitespace on the key
    26  	key = strings.TrimSpace(key)
    27  	if key == "" {
    28  		return fmt.Errorf("No key to left '=' in arg: %s", raw)
    29  	}
    30  
    31  	value, err := ParseInput(input)
    32  	if err != nil {
    33  		return err
    34  	}
    35  
    36  	*v = Merge(*v, map[string]interface{}{key: value})
    37  	return nil
    38  }