github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/cli/client/config.go (about) 1 package client 2 3 import ( 4 "fmt" 5 6 "k8s.io/client-go/tools/clientcmd" 7 clientcmdapi "k8s.io/client-go/tools/clientcmd/api" 8 9 "github.com/tilt-dev/tilt/internal/filelock" 10 "github.com/tilt-dev/tilt/pkg/model" 11 ) 12 13 type TiltClientConfig clientcmd.ClientConfig 14 15 // Uses the kubernetes config-loading library to create a client config 16 // for the given server name. 17 func ProvideClientConfig(apiServerName model.APIServerName, configAccess clientcmd.ConfigAccess) (TiltClientConfig, error) { 18 var config *clientcmdapi.Config 19 err := filelock.WithRLock(configAccess, func() error { 20 var e error 21 config, e = configAccess.GetStartingConfig() 22 return e 23 }) 24 if err != nil { 25 return nil, err 26 } 27 28 name := string(apiServerName) 29 30 if _, ok := config.Contexts[name]; !ok { 31 return nil, fmt.Errorf("No tilt apiserver found: %s", name) 32 } 33 34 newCfg := config.DeepCopy() 35 newCfg.CurrentContext = name 36 return TiltClientConfig(clientcmd.NewDefaultClientConfig(*newCfg, nil)), nil 37 }