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  }