github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/config/string.go (about) 1 package config 2 3 import ( 4 "fmt" 5 6 flag "github.com/spf13/pflag" 7 "go.starlark.net/starlark" 8 ) 9 10 type stringSetting struct { 11 value string 12 isSet bool 13 } 14 15 var _ configValue = &stringSetting{} 16 var _ flag.Value = &stringSetting{} 17 18 func (s *stringSetting) starlark() starlark.Value { 19 return starlark.String(s.value) 20 } 21 22 func (s *stringSetting) IsSet() bool { 23 return s.isSet 24 } 25 26 func (s *stringSetting) Type() string { 27 return "string" 28 } 29 30 func (s *stringSetting) setFromInterface(i interface{}) error { 31 if i == nil { 32 return nil 33 } 34 v, ok := i.(string) 35 if !ok { 36 return fmt.Errorf("expected %T, found %T", s.value, i) 37 } 38 39 s.value = v 40 s.isSet = true 41 42 return nil 43 } 44 45 func (s *stringSetting) Set(v string) error { 46 if s.isSet { 47 return fmt.Errorf("string settings can only be specified once. multiple values found (last value: %s)", v) 48 } 49 50 s.value = v 51 s.isSet = true 52 return nil 53 } 54 55 func (s *stringSetting) String() string { 56 return s.value 57 }