github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/fly/commands/internal/flaghelpers/yaml_variable_pair_flag.go (about) 1 package flaghelpers 2 3 import ( 4 "encoding/json" 5 "fmt" 6 7 "github.com/pf-qiu/concourse/v6/vars" 8 "sigs.k8s.io/yaml" 9 ) 10 11 type YAMLVariablePairFlag vars.KVPair 12 13 func (pair *YAMLVariablePairFlag) UnmarshalFlag(value string) error { 14 k, v, ok := parseKeyValuePair(value) 15 if !ok { 16 return fmt.Errorf("invalid variable pair '%s' (must be name=value)", value) 17 } 18 19 var err error 20 pair.Ref, err = vars.ParseReference(k) 21 if err != nil { 22 return err 23 } 24 err = yaml.Unmarshal([]byte(v), &pair.Value, useNumber) 25 if err != nil { 26 return err 27 } 28 29 return nil 30 } 31 32 func useNumber(d *json.Decoder) *json.Decoder { 33 d.UseNumber() 34 return d 35 }