diff --git a/command/checkUpdate.go b/command/checkForUpdate.go similarity index 73% rename from command/checkUpdate.go rename to command/checkForUpdate.go index 6bb073e51..d499cb8d4 100644 --- a/command/checkUpdate.go +++ b/command/checkForUpdate.go @@ -13,29 +13,32 @@ import ( const nwo = "github/homebrew-gh" -func CheckForUpdate() error { +func CheckForUpdate(handleUpdate chan func()) { if !isatty.IsTerminal(os.Stdout.Fd()) { - return nil + handleUpdate <- nil } latestVersion, err := getLastestVersion() if err != nil { - return err + handleUpdate <- nil } updateAvailable := latestVersion != Version + if updateAvailable { - fmt.Printf(utils.Cyan(` -New version of gh is available! %s → %s + handleUpdate <- func() { + fmt.Printf(utils.Cyan(` +A new version of gh is available! %s → %s Changelog: https://github.com/%s/releases/tag/%[2]s Run 'brew upgrade github/gh/gh' to update!`)+"\n\n", Version, latestVersion, nwo) + } + } else { + handleUpdate <- nil } - - return nil } func getLastestVersion() (string, error) { - url := fmt.Sprint("https://api.github.com/repos/%s/releases/latest", nwo) + url := fmt.Sprintf("https://api.github.com/repos/%s/releases/latest", nwo) resp, err := http.Get(url) if err != nil { return "", err diff --git a/main.go b/main.go index daa91cc87..6dc1023cc 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,10 @@ import ( ) func main() { - command.CheckForUpdate() + handleUpdate := make(chan func()) + go command.CheckForUpdate(handleUpdate) + + fmt.Printf("🌭 %+v\n", "bang") if cmd, err := command.RootCmd.ExecuteC(); err != nil { fmt.Fprintln(os.Stderr, err) @@ -19,4 +22,6 @@ func main() { } os.Exit(1) } + + (<-handleUpdate)() }