50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
|
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)
|
||
|
}
|
||
|
}
|