Skip to content

Commit

Permalink
Merge pull request #94 from anywherelan/awl-check-updates
Browse files Browse the repository at this point in the history
cmd/awl: add background check for new version
  • Loading branch information
pymq committed Jun 4, 2023
2 parents e48d278 + 68362c3 commit dd43cb2
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 7 deletions.
12 changes: 7 additions & 5 deletions cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,16 @@ var defaultApiAddr = "127.0.0.1:" + strconv.Itoa(config.DefaultHTTPPort)
var binaryName = path.Base(os.Args[0])

type Application struct {
logger *log.ZapEventLogger
api *apiclient.Client
cliapp *cli.App
logger *log.ZapEventLogger
api *apiclient.Client
cliapp *cli.App
updateType update.ApplicationType
}

func New() *Application {
func New(updateType update.ApplicationType) *Application {
app := new(Application)
app.logger = log.Logger("awl/cli")
app.updateType = updateType
app.init()

return app
Expand Down Expand Up @@ -312,7 +314,7 @@ func (a *Application) init() {
return fmt.Errorf("update: read config: %v", err)
}

updService, err := update.NewUpdateService(conf, a.logger, update.AppTypeAwl)
updService, err := update.NewUpdateService(conf, a.logger, a.updateType)
if err != nil {
return fmt.Errorf("update: create update service: %v", err)
}
Expand Down
3 changes: 2 additions & 1 deletion cmd/awl-tray/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/anywherelan/awl/awlevent"
"github.com/anywherelan/awl/cli"
"github.com/anywherelan/awl/config"
"github.com/anywherelan/awl/update"
"github.com/gen2brain/beeep"
"github.com/ipfs/go-log/v2"
"github.com/libp2p/go-libp2p/p2p/host/eventbus"
Expand All @@ -33,7 +34,7 @@ func getConfig() (*config.Config, error) {
}

func main() {
cli.New().Run()
cli.New(update.AppTypeAwlTray).Run()

initOSSpecificHacks()

Expand Down
43 changes: 42 additions & 1 deletion cmd/awl/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ import (

"github.com/anywherelan/awl"
"github.com/anywherelan/awl/cli"
"github.com/anywherelan/awl/config"
"github.com/anywherelan/awl/update"
"github.com/ipfs/go-log/v2"
)

func main() {
cli.New().Run()
cli.New(update.AppTypeAwl).Run()

app := awl.New()
logger := app.SetupLoggerAndConfig()
Expand All @@ -24,6 +27,26 @@ func main() {
}
app.Api.SetupFrontend(awl.FrontendStatic())

if app.Conf.Update.TrayAutoCheckEnabled {
go func() {
if config.IsDevVersion() {
logger.Info("updates auto check is disabled for dev version")
return
}
interval, err := time.ParseDuration(app.Conf.Update.TrayAutoCheckInterval)
if err != nil {
logger.Errorf("update auto check: interval parse: %v", err)
return
}
ticker := time.NewTicker(interval)
defer ticker.Stop()
checkForUpdates(app.Conf, logger)
for range ticker.C {
checkForUpdates(app.Conf, logger)
}
}()
}

quit := make(chan os.Signal, 2)
signal.Notify(quit, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)

Expand All @@ -45,3 +68,21 @@ func main() {
finishedCh <- struct{}{}
logger.Info("exited normally")
}

func checkForUpdates(conf *config.Config, logger *log.ZapEventLogger) {
updService, err := update.NewUpdateService(conf, logger, update.AppTypeAwl)
if err != nil {
logger.Errorf("update auto check: creating update service: %v", err)
return
}
updStatus, err := updService.CheckForUpdates()
if err != nil {
logger.Errorf("update auto check: check for updates: %v", err)
return
}
if !updStatus {
return
}

logger.Infof("New version available: %s, current version: %s", updService.NewVersion.VersionTag(), config.Version)
}

0 comments on commit dd43cb2

Please sign in to comment.