From b05d059e48d0bf0397b4a9ff1f45730c457fe4b1 Mon Sep 17 00:00:00 2001 From: gmeghnag Date: Wed, 23 Nov 2022 22:14:02 +0100 Subject: [PATCH] allow upgrade --to=latest #63 --- cmd/upgrade/helpers.go | 8 ++++---- cmd/upgrade/upgrade.go | 32 +++++++++++++++++++++----------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/cmd/upgrade/helpers.go b/cmd/upgrade/helpers.go index b5baaeed..7bd6b408 100644 --- a/cmd/upgrade/helpers.go +++ b/cmd/upgrade/helpers.go @@ -33,7 +33,7 @@ import ( type Releases []Release type Release map[string]interface{} -func updateOmcExecutable(omcExecutablePath string, url string) (err error) { +func updateOmcExecutable(omcExecutablePath string, url string, desiredVersion string) (err error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return err @@ -59,7 +59,7 @@ func updateOmcExecutable(omcExecutablePath string, url string) (err error) { defer f.Close() //bar := progressbar.Default(-1, "") - bar := CustomBytes( + bar := CustomBytes(desiredVersion, resp.ContentLength, "upgrading", ) @@ -104,7 +104,7 @@ func checkReleases(repoName string) { } } -func CustomBytes(maxBytes int64, description ...string) *progressbar.ProgressBar { +func CustomBytes(desiredVersion string, maxBytes int64, description ...string) *progressbar.ProgressBar { desc := "" if len(description) > 0 { desc = description[0] @@ -118,7 +118,7 @@ func CustomBytes(maxBytes int64, description ...string) *progressbar.ProgressBar progressbar.OptionThrottle(65*time.Millisecond), progressbar.OptionShowCount(), progressbar.OptionOnCompletion(func() { - fmt.Fprint(os.Stderr, "\rDone! \n") + fmt.Fprint(os.Stderr, "\romc upgraded to "+desiredVersion+" \n") }), progressbar.OptionSpinnerType(14), //progressbar.OptionFullWidth(), diff --git a/cmd/upgrade/upgrade.go b/cmd/upgrade/upgrade.go index bb4c161a..21e6f6fd 100644 --- a/cmd/upgrade/upgrade.go +++ b/cmd/upgrade/upgrade.go @@ -39,31 +39,41 @@ func upgradeBinary(repoName string) { checkReleases(repoName) os.Exit(0) } - if string(DesiredVersion[0]) != "v" { + if DesiredVersion != "latest" && string(DesiredVersion[0]) != "v" { fmt.Println("error: --to must be a semantic version (e.g. v4.0.5): No Major.Minor.Patch elements found") os.Exit(1) } - desiredReleaseVer := semver.New(DesiredVersion[1:]) - if vars.OMCVersionTag == "" { - vars.OMCVersionTag = "v2.0.1" - } - currentVer := semver.New(vars.OMCVersionTag[1:]) - if desiredReleaseVer.LessThan(*currentVer) { - fmt.Println("error: The update " + DesiredVersion + " is not one of the available updates (check them by running \"omc upgrade\")") - os.Exit(1) + if DesiredVersion != "latest" { + desiredReleaseVer := semver.New(DesiredVersion[1:]) + if vars.OMCVersionTag == "" { + vars.OMCVersionTag = "v2.0.1" + } + currentVer := semver.New(vars.OMCVersionTag[1:]) + if desiredReleaseVer.LessThan(*currentVer) { + fmt.Println("error: The update " + DesiredVersion + " is not one of the available updates (check them by running \"omc upgrade\")") + os.Exit(1) + } } switch operatingSystem { case "windows": fmt.Println("This command is not available for windows.") fmt.Println("Open an issue on the GitHub repo https://github.com/gmeghnag/omc if you want it impemented.") case "darwin": - err = updateOmcExecutable(omcExecutablePath, "https://github.com/"+repoName+"/releases/download/"+DesiredVersion+"/omc_Darwin_x86_64") + omcUrl := "https://github.com/" + repoName + "/releases/download/" + DesiredVersion + "/omc_Darwin_x86_64" + if DesiredVersion == "latest" { + omcUrl = "https://github.com/" + repoName + "/releases/" + DesiredVersion + "/download/omc_Darwin_x86_64" + } + err = updateOmcExecutable(omcExecutablePath, omcUrl, DesiredVersion) if err != nil { fmt.Println(err) os.Exit(1) } case "linux": - err = updateOmcExecutable(omcExecutablePath, "https://github.com/"+repoName+"/releases/download/"+DesiredVersion+"/omc_Linux_x86_64") + omcUrl := "https://github.com/" + repoName + "/releases/download/" + DesiredVersion + "/omc_Linux_x86_64" + if DesiredVersion == "latest" { + omcUrl = "https://github.com/" + repoName + "/releases/" + DesiredVersion + "/download/omc_Linux_x86_64" + } + err = updateOmcExecutable(omcExecutablePath, omcUrl, DesiredVersion) if err != nil { fmt.Println(err) os.Exit(1)