github.com/hashicorp/packer@v1.14.3/command/flag-kv/flag.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package kvflag 5 6 import ( 7 "fmt" 8 "strings" 9 ) 10 11 // Flag is a flag.Value implementation for parsing user variables 12 // from the command-line in the format of '-var key=value'. 13 type Flag map[string]string 14 15 func (v *Flag) String() string { 16 return "" 17 } 18 19 func (v *Flag) Set(raw string) error { 20 idx := strings.Index(raw, "=") 21 if idx == -1 { 22 return fmt.Errorf("No '=' value in arg: %s", raw) 23 } 24 25 if *v == nil { 26 *v = make(map[string]string) 27 } 28 29 key, value := raw[0:idx], raw[idx+1:] 30 (*v)[key] = value 31 return nil 32 }