From 0fb77aeb2d0c256a2cec048fbf753a2fb9c8bca2 Mon Sep 17 00:00:00 2001 From: Tanmoy Sarkar <57363826+tanmoysrt@users.noreply.github.com> Date: Sat, 25 May 2024 14:14:38 +0530 Subject: [PATCH] feat: swiftwave updater fixed and no restart on no update (#652) * feat: swiftwave updater fixed and no restart on no update * chore: docs update * fix: typo (cherry picked from commit a47b1cac2d95913b20c127c34507614270f449cf) --- swiftwave_service/cmd/auto-updater.go | 2 +- swiftwave_service/cmd/update.go | 45 +++++++++++++++++---------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/swiftwave_service/cmd/auto-updater.go b/swiftwave_service/cmd/auto-updater.go index 5394a3b13d..05b62ac888 100644 --- a/swiftwave_service/cmd/auto-updater.go +++ b/swiftwave_service/cmd/auto-updater.go @@ -21,7 +21,7 @@ func init() { var autoUpdateCmd = &cobra.Command{ Use: "auto-update", - Short: "Check for updates each 20 min and update Swiftwave automatically", + Short: "Check for updates each 15 min and update Swiftwave automatically", Run: func(cmd *cobra.Command, args []string) { // print help err := cmd.Help() diff --git a/swiftwave_service/cmd/update.go b/swiftwave_service/cmd/update.go index 02db8f36ec..e4e7abfd29 100644 --- a/swiftwave_service/cmd/update.go +++ b/swiftwave_service/cmd/update.go @@ -21,19 +21,17 @@ var updateCmd = &cobra.Command{ return } if strings.Contains(distro, "debian") { - err = updateDebianPackage("swiftwave") + isUpdated, err = updateDebianPackage("swiftwave") if err != nil { fmt.Println("Error: ", err) return } - isUpdated = true } else if strings.Contains(distro, "redhat") { - err = updateRedHatPackage("swiftwave") + isUpdated, err = updateRedHatPackage("swiftwave") if err != nil { fmt.Println("Error: ", err) return } - isUpdated = true } else { fmt.Println("Error: unknown distribution") return @@ -67,18 +65,33 @@ func detectDistro() (string, error) { return "", fmt.Errorf("unknown distribution") } -func updateDebianPackage(packageName string) error { - cmd := exec.Command("apt", "install", "--only-upgrade", packageName) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - return cmd.Run() +func updateDebianPackage(packageName string) (bool, error) { + // run apt update first + output, err := exec.Command("apt", "update", "-y").Output() + fmt.Println(string(output)) + if err != nil { + return false, err + } + output, err = exec.Command("apt", "install", "--only-upgrade", packageName).Output() + fmt.Println(string(output)) + if err != nil { + return false, err + } + // check if the package is already up to date + line := "swiftwave is already the newest version" + if strings.Contains(string(output), line) { + return false, nil + } + return true, nil } -func updateRedHatPackage(packageName string) error { - cmd := exec.Command("dnf", "update", packageName) - cmd.Stdin = os.Stdin - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - return cmd.Run() +func updateRedHatPackage(packageName string) (bool, error) { + output, err := exec.Command("dnf", "update", packageName).Output() + if err != nil { + return false, err + } + if strings.Contains(string(output), "Nothing to do.") { + return false, nil + } + return true, nil }