github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/docker/data_types.go (about)

     1  package docker
     2  
     3  func MaybeListStringFromStringList(list ...string) MaybeListString {
     4  	return MaybeListString{
     5  		values: list,
     6  	}
     7  }
     8  
     9  type MaybeListString struct {
    10  	values []string
    11  }
    12  
    13  func (v MaybeListString) IsZero() bool {
    14  	return len(v.values) == 0
    15  }
    16  
    17  func (v MaybeListString) Value() []string {
    18  	return v.values
    19  }
    20  
    21  func (v MaybeListString) MarshalYAML() (interface{}, error) {
    22  	if len(v.values) > 1 {
    23  		return v.values, nil
    24  	}
    25  	return v.values[0], nil
    26  }
    27  
    28  func (v *MaybeListString) UnmarshalYAML(unmarshal func(interface{}) error) error {
    29  	var s string
    30  	err := unmarshal(&s)
    31  	if err == nil {
    32  		v.values = []string{s}
    33  	} else {
    34  		var values []string
    35  		err := unmarshal(&values)
    36  		if err != nil {
    37  			return err
    38  		}
    39  		v.values = values
    40  	}
    41  	return nil
    42  }