func (updater *Updater) PromptForUpdate() (err error) { if !updater.timeToUpdate() { return } releaseName, version := updater.latestReleaseNameAndVersion() if version != "" && version != updater.CurrentVersion { switch autoUpdateConfig() { case "always": err = updater.updateTo(releaseName, version) case "never": return default: fmt.Println("There is a newer version of gh available.") fmt.Print("Would you like to update? ([Y]es/[N]o/[A]lways/N[e]ver): ") var confirm string fmt.Scan(&confirm) always := utils.IsOption(confirm, "a", "always") if always || utils.IsOption(confirm, "y", "yes") { err = updater.updateTo(releaseName, version) } saveAutoUpdateConfiguration(confirm, always) } } return }
func reportCrash(err error) { if err == nil { return } buf := make([]byte, 10000) runtime.Stack(buf, false) stack := formatStack(buf) switch reportCrashConfig() { case "always": report(err, stack) case "never": printError(err, stack) default: printError(err, stack) fmt.Print("Would you like to open an issue? ([Y]es/[N]o/[A]lways/N[e]ver): ") var confirm string fmt.Scan(&confirm) always := utils.IsOption(confirm, "a", "always") if always || utils.IsOption(confirm, "y", "yes") { report(err, stack) } saveReportConfiguration(confirm, always) } os.Exit(1) }
func saveAutoUpdateConfiguration(confirm string, always bool) { if always { git.SetGlobalConfig(ghAutoUpdateConfig, "always") } else if utils.IsOption(confirm, "e", "never") { git.SetGlobalConfig(ghAutoUpdateConfig, "never") } }
func saveReportConfiguration(confirm string, always bool) { if always { git.SetGlobalConfig(ghReportCrashConfig, "always") } else if utils.IsOption(confirm, "e", "never") { git.SetGlobalConfig(ghReportCrashConfig, "never") } }