From ce3be3343a52335f48fbb7338fe8408f144161f3 Mon Sep 17 00:00:00 2001 From: Navratan Lal Gupta Date: Sun, 27 Oct 2024 22:09:21 +0530 Subject: [PATCH] add support for "auto" as kubectl version with use subcommand Signed-off-by: Navratan Lal Gupta --- README.md | 3 ++- internal/use/use.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 316769b..41f286d 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ k8senv [VERB] [CLIENT] [VERSION] # [VERB] can be install, use, list or remove # [CLIENT] can be kubectl, velero or helm -# [VERSION] can be any client's version in format v*.*.* or latest or auto (only supported for kubectl and velero) +# [VERSION] can be any client's version in format v*.*.* or latest or auto (auto is only supported for kubectl install and use subcommands) examples: @@ -120,6 +120,7 @@ Any of below commands can be used to switch kubectl version to 1.26.2. If versio k8senv use kubectl v1.26.2 k8senv use kubectl 1.26.2 k8senv kubectl use v1.26.2 +k8senv use kubectl auto ``` If you were using system installed version of `kubectl` in same shell session, you will need to clear the cached path of the kubectl using below command. diff --git a/internal/use/use.go b/internal/use/use.go index 3220126..e05818f 100644 --- a/internal/use/use.go +++ b/internal/use/use.go @@ -8,6 +8,7 @@ import ( "strings" "github.com/navilg/k8senv/internal/config" + "github.com/navilg/k8senv/internal/ikubernetes" "github.com/navilg/k8senv/internal/install" ) @@ -19,6 +20,17 @@ func UseVersion(toolname, version string) error { return errors.New(".k8senv/bin is not added in PATH environment variable") } + if toolname == "kubectl" && version == "auto" { + fmt.Println("Fetching Kubernetes server version") + k8sVersion, err := ikubernetes.GetK8sVersion() + if err != nil { + fmt.Println("Error getting Kubernetes server version") + return err + } + version = *k8sVersion + fmt.Println("Kubernetes server version is", version) + } + major_minor_patch_vers := strings.Split(version, ".") if !strings.HasPrefix(major_minor_patch_vers[0], "v") {