diff --git a/pkg/update/state.go b/pkg/update/state.go index 315ce61f12..e80c1c9caf 100644 --- a/pkg/update/state.go +++ b/pkg/update/state.go @@ -16,6 +16,7 @@ import ( type state struct { Message string `json:"message"` LastChecked time.Time `json:"lastChecked"` + Version string `json:"version"` } // loadState loads the update check state from disk, returning defaults if it does not exist diff --git a/pkg/update/update.go b/pkg/update/update.go index f76ae667f8..074c9253ab 100644 --- a/pkg/update/update.go +++ b/pkg/update/update.go @@ -26,15 +26,23 @@ func DisplayAndCheckForRelease() error { return fmt.Errorf("update check disabled") } - state, err := loadState() + s, err := loadState() if err != nil { return err } - if time.Since(state.LastChecked) > time.Hour { + + if s.Version != global.Version { + console.Debugf("Resetting update message because Cog has been upgraded") + if err := writeState(&state{Message: "", LastChecked: time.Now(), Version: global.Version}); err != nil { + return err + } + } + + if time.Since(s.LastChecked) > time.Hour { startCheckingForRelease() } - if state.Message != "" { - console.Info(state.Message) + if s.Message != "" { + console.Info(s.Message) console.Info("") } return nil @@ -50,7 +58,7 @@ func startCheckingForRelease() { if r == nil { break } - if err := writeState(&state{Message: r.Message, LastChecked: time.Now()}); err != nil { + if err := writeState(&state{Message: r.Message, LastChecked: time.Now(), Version: global.Version}); err != nil { console.Debugf("Failed to write state: %s", err) }