package updater import ( "github.com/rs/zerolog" "github.com/urfave/cli/v2" ) type VersionWarningChecker struct { warningChan chan string } func StartWarningCheck(c *cli.Context) VersionWarningChecker { checker := VersionWarningChecker{ warningChan: make(chan string), } go func() { options := updateOptions{ updateDisabled: true, isBeta: c.Bool("beta"), isStaging: c.Bool("staging"), isForced: false, intendedVersion: "", } checkResult, err := CheckForUpdate(options) if err == nil { checker.warningChan <- checkResult.UserMessage() } close(checker.warningChan) }() return checker } func (checker VersionWarningChecker) getWarning() string { select { case message := <-checker.warningChan: return message default: // No feedback on time, we don't wait for it, since this is best-effort. return "" } } func (checker VersionWarningChecker) LogWarningIfAny(log *zerolog.Logger) { if warning := checker.getWarning(); warning != "" { log.Warn().Msg(warning) } }