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 }