diff --git a/internal/cli/cmd/version/version.go b/internal/cli/cmd/version/version.go index a7bb1dc2327..d96d21c9888 100644 --- a/internal/cli/cmd/version/version.go +++ b/internal/cli/cmd/version/version.go @@ -23,6 +23,7 @@ import ( "fmt" "runtime" + gv "github.com/hashicorp/go-version" "github.com/spf13/cobra" "k8s.io/klog/v2" cmdutil "k8s.io/kubectl/pkg/cmd/util" @@ -72,7 +73,18 @@ func (o *versionOptions) Run(f cmdutil.Factory) { fmt.Printf(" Platform: %s/%s\n", runtime.GOOS, runtime.GOARCH) } - if v.KubeBlocks != "" && v.Cli != v.KubeBlocks { + kbVersion, err := gv.NewVersion(v.KubeBlocks) + if err != nil { + klog.V(1).Infof("failed to parse KubeBlocks version: %v", err) + return + } + cliVersion, err := gv.NewVersion(v.Cli) + if err != nil { + klog.V(1).Infof("failed to parse kbcli version: %v", err) + return + } + + if !kbVersion.Equal(cliVersion) { fmt.Printf("WARNING: version difference between kbcli (%s) and kubeblocks (%s) \n", v.Cli, v.KubeBlocks) } } diff --git a/internal/cli/cmd/version/version_test.go b/internal/cli/cmd/version/version_test.go index f3c1d9c255d..f1771b1acd0 100644 --- a/internal/cli/cmd/version/version_test.go +++ b/internal/cli/cmd/version/version_test.go @@ -23,6 +23,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" + gv "github.com/hashicorp/go-version" "k8s.io/client-go/rest/fake" cmdtesting "k8s.io/kubectl/pkg/cmd/testing" ) @@ -39,4 +40,22 @@ var _ = Describe("version", func() { o := &versionOptions{} o.Run(tf) }) + + It("version comparison", func() { + kbVersion, _ := gv.NewVersion("0.6.0-alpha.23") + cliVersion, _ := gv.NewVersion("v0.6.0-alpha.23") + Expect(kbVersion.Equal(cliVersion)).Should(BeTrue()) + + kbVersion, _ = gv.NewVersion("0.6.0-alpha.23") + cliVersion, _ = gv.NewVersion("v0.6.23") + Expect(kbVersion.Equal(cliVersion)).Should(BeFalse()) + + kbVersion, _ = gv.NewVersion("0.6.0-alpha.23") + cliVersion, _ = gv.NewVersion("0.6.0-beta.23") + Expect(kbVersion.Equal(cliVersion)).Should(BeFalse()) + + kbVersion, _ = gv.NewVersion("0.6.3") + cliVersion, _ = gv.NewVersion("v0.6.3") + Expect(kbVersion.Equal(cliVersion)).Should(BeTrue()) + }) })