Add autoUpgrade coroutine (fixes #727)
This commit is contained in:
@@ -620,6 +620,10 @@ nextFolder:
|
|||||||
go standbyMonitor()
|
go standbyMonitor()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg.Options.AutoUpgradeIntervalH > 0 {
|
||||||
|
go autoUpgrade()
|
||||||
|
}
|
||||||
|
|
||||||
events.Default.Log(events.StartupComplete, nil)
|
events.Default.Log(events.StartupComplete, nil)
|
||||||
go generateEvents()
|
go generateEvents()
|
||||||
|
|
||||||
@@ -1172,3 +1176,36 @@ func standbyMonitor() {
|
|||||||
now = time.Now()
|
now = time.Now()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func autoUpgrade() {
|
||||||
|
var skipped bool
|
||||||
|
interval := time.Duration(cfg.Options.AutoUpgradeIntervalH) * time.Hour
|
||||||
|
for {
|
||||||
|
if skipped {
|
||||||
|
time.Sleep(interval)
|
||||||
|
} else {
|
||||||
|
skipped = true
|
||||||
|
}
|
||||||
|
|
||||||
|
rel, err := upgrade.LatestRelease(strings.Contains(Version, "-beta"))
|
||||||
|
if err != nil {
|
||||||
|
l.Warnln("Automatic upgrade:", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if upgrade.CompareVersions(rel.Tag, Version) <= 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
l.Infof("Automatic upgrade (current %q < latest %q)", Version, rel.Tag)
|
||||||
|
err = upgrade.UpgradeTo(rel, GoArchExtra)
|
||||||
|
if err != nil {
|
||||||
|
l.Warnln("Automatic upgrade:", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
l.Warnf("Automatically upgraded to version %q. Restarting in 1 minute.", rel.Tag)
|
||||||
|
time.Sleep(time.Minute)
|
||||||
|
stop <- exitUpgrading
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ type OptionsConfiguration struct {
|
|||||||
UPnPRenewal int `xml:"upnpRenewalMinutes" default:"30"`
|
UPnPRenewal int `xml:"upnpRenewalMinutes" default:"30"`
|
||||||
URAccepted int `xml:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently)
|
URAccepted int `xml:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently)
|
||||||
RestartOnWakeup bool `xml:"restartOnWakeup" default:"true"`
|
RestartOnWakeup bool `xml:"restartOnWakeup" default:"true"`
|
||||||
|
AutoUpgradeIntervalH int `xml:"autoUpgradeIntervalH" default:"12"` // 0 for off
|
||||||
|
|
||||||
Deprecated_RescanIntervalS int `xml:"rescanIntervalS,omitempty" json:"-"`
|
Deprecated_RescanIntervalS int `xml:"rescanIntervalS,omitempty" json:"-"`
|
||||||
Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"`
|
Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"`
|
||||||
|
|||||||
Reference in New Issue
Block a user