github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/tiltfile/k8s/types.go (about) 1 package k8s 2 3 import ( 4 "fmt" 5 6 "go.starlark.net/starlark" 7 8 "github.com/tilt-dev/tilt/internal/tiltfile/value" 9 "github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1" 10 ) 11 12 // Deserializing discovery strategy from starlark values. 13 type DiscoveryStrategy v1alpha1.KubernetesDiscoveryStrategy 14 15 func (ds *DiscoveryStrategy) Unpack(v starlark.Value) error { 16 s, ok := value.AsString(v) 17 if !ok { 18 return fmt.Errorf("Must be a string. Got: %s", v.Type()) 19 } 20 21 kdStrategy := v1alpha1.KubernetesDiscoveryStrategy(s) 22 if !(kdStrategy == "" || 23 kdStrategy == v1alpha1.KubernetesDiscoveryStrategyDefault || 24 kdStrategy == v1alpha1.KubernetesDiscoveryStrategySelectorsOnly) { 25 return fmt.Errorf("Invalid. Must be one of: %q, %q", 26 v1alpha1.KubernetesDiscoveryStrategyDefault, 27 v1alpha1.KubernetesDiscoveryStrategySelectorsOnly) 28 } 29 30 *ds = DiscoveryStrategy(kdStrategy) 31 return nil 32 }