From 4d6f7ad86a788b4cea256acd5a40566bfc6604a7 Mon Sep 17 00:00:00 2001 From: Rick <1450685+LinuxSuRen@users.noreply.github.com> Date: Mon, 20 Feb 2023 19:42:31 +0800 Subject: [PATCH] feat: add a flag to check version (#357) Co-authored-by: rick --- cmd/install.go | 13 ++++++++----- cmd/install_test.go | 3 ++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cmd/install.go b/cmd/install.go index 70ea6f2..490c901 100644 --- a/cmd/install.go +++ b/cmd/install.go @@ -89,15 +89,18 @@ func (o *installOption) shouldInstall() (should, exist bool) { var greater bool if name, lookErr := o.execer.LookPath(o.tool); lookErr == nil { exist = true - versionCmd := "version" + + var versionCmd string if o.downloadOption != nil && o.downloadOption.Package != nil && o.downloadOption.Package.VersionCmd != "" { versionCmd = o.downloadOption.Package.VersionCmd } - log.Println("check target version via", name, versionCmd) - if data, err := o.execer.Command(name, versionCmd); err == nil && - (o.downloadOption.Package != nil && o.downloadOption.Package.Version != "") { - greater = version.GreatThan(o.downloadOption.Package.Version, string(data)) + if versionCmd != "" { + log.Println("check target version via", name, versionCmd) + if data, err := o.execer.Command(name, versionCmd); err == nil && + (o.downloadOption.Package != nil && o.downloadOption.Package.Version != "") { + greater = version.GreatThan(o.downloadOption.Package.Version, string(data)) + } } } should = o.force || !exist || greater diff --git a/cmd/install_test.go b/cmd/install_test.go index a2e8338..cb45e8c 100644 --- a/cmd/install_test.go +++ b/cmd/install_test.go @@ -134,7 +134,8 @@ func TestShouldInstall(t *testing.T) { }, downloadOption: &downloadOption{ Package: &installer.HDConfig{ - Version: "v1.2.4", + Version: "v1.2.4", + VersionCmd: "-v", }, }, tool: "fake",