Skip to content

Commit ee41088

Browse files
feat: swiftwave updater fixed and no restart on no update (#652) (#653)
* feat: swiftwave updater fixed and no restart on no update * chore: docs update * fix: typo (cherry picked from commit a47b1ca) Co-authored-by: Tanmoy Sarkar <[email protected]>
1 parent a4450f5 commit ee41088

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

swiftwave_service/cmd/auto-updater.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func init() {
2121

2222
var autoUpdateCmd = &cobra.Command{
2323
Use: "auto-update",
24-
Short: "Check for updates each 20 min and update Swiftwave automatically",
24+
Short: "Check for updates each 15 min and update Swiftwave automatically",
2525
Run: func(cmd *cobra.Command, args []string) {
2626
// print help
2727
err := cmd.Help()

swiftwave_service/cmd/update.go

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,17 @@ var updateCmd = &cobra.Command{
2121
return
2222
}
2323
if strings.Contains(distro, "debian") {
24-
err = updateDebianPackage("swiftwave")
24+
isUpdated, err = updateDebianPackage("swiftwave")
2525
if err != nil {
2626
fmt.Println("Error: ", err)
2727
return
2828
}
29-
isUpdated = true
3029
} else if strings.Contains(distro, "redhat") {
31-
err = updateRedHatPackage("swiftwave")
30+
isUpdated, err = updateRedHatPackage("swiftwave")
3231
if err != nil {
3332
fmt.Println("Error: ", err)
3433
return
3534
}
36-
isUpdated = true
3735
} else {
3836
fmt.Println("Error: unknown distribution")
3937
return
@@ -67,18 +65,33 @@ func detectDistro() (string, error) {
6765
return "", fmt.Errorf("unknown distribution")
6866
}
6967

70-
func updateDebianPackage(packageName string) error {
71-
cmd := exec.Command("apt", "install", "--only-upgrade", packageName)
72-
cmd.Stdin = os.Stdin
73-
cmd.Stdout = os.Stdout
74-
cmd.Stderr = os.Stderr
75-
return cmd.Run()
68+
func updateDebianPackage(packageName string) (bool, error) {
69+
// run apt update first
70+
output, err := exec.Command("apt", "update", "-y").Output()
71+
fmt.Println(string(output))
72+
if err != nil {
73+
return false, err
74+
}
75+
output, err = exec.Command("apt", "install", "--only-upgrade", packageName).Output()
76+
fmt.Println(string(output))
77+
if err != nil {
78+
return false, err
79+
}
80+
// check if the package is already up to date
81+
line := "swiftwave is already the newest version"
82+
if strings.Contains(string(output), line) {
83+
return false, nil
84+
}
85+
return true, nil
7686
}
7787

78-
func updateRedHatPackage(packageName string) error {
79-
cmd := exec.Command("dnf", "update", packageName)
80-
cmd.Stdin = os.Stdin
81-
cmd.Stdout = os.Stdout
82-
cmd.Stderr = os.Stderr
83-
return cmd.Run()
88+
func updateRedHatPackage(packageName string) (bool, error) {
89+
output, err := exec.Command("dnf", "update", packageName).Output()
90+
if err != nil {
91+
return false, err
92+
}
93+
if strings.Contains(string(output), "Nothing to do.") {
94+
return false, nil
95+
}
96+
return true, nil
8497
}

0 commit comments

Comments
 (0)