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  }