diff --git a/cmd/kubectx/fzf.go b/cmd/kubectx/fzf.go index 38fb5b0..364cd66 100644 --- a/cmd/kubectx/fzf.go +++ b/cmd/kubectx/fzf.go @@ -23,6 +23,7 @@ type InteractiveSwitchOp struct { func (op InteractiveSwitchOp) Run(_, stderr io.Writer) error { // parse kubeconfig just to see if it can be loaded kc := new(kubeconfig.Kubeconfig).WithLoader(kubeconfig.DefaultLoader) + defer kc.Close() if err := kc.Parse(); err != nil { if cmdutil.IsNotFoundErr(err) { printer.Warning(stderr, "kubeconfig file not found") @@ -30,7 +31,12 @@ func (op InteractiveSwitchOp) Run(_, stderr io.Writer) error { } return errors.Wrap(err, "kubeconfig error") } - kc.Close() + + ctxs := kc.ContextNames() + if ctxs == nil { + err := printer.Warning(stderr, "No kubectl context found") + return errors.Wrap(err, "kubeconfig error") + } cmd := exec.Command("fzf", "--ansi", "--no-preview") var out bytes.Buffer