Files
OpenList/bootstrap/update.go

48 lines
1.1 KiB
Go
Raw Normal View History

2020-12-31 15:03:25 +08:00
package bootstrap
import (
"encoding/json"
"github.com/Xhofe/alist/conf"
2021-01-11 16:53:48 +08:00
"github.com/Xhofe/alist/utils"
2020-12-31 15:03:25 +08:00
log "github.com/sirupsen/logrus"
"io/ioutil"
"net/http"
)
2021-02-04 10:02:34 +08:00
// github release response bean
2020-12-31 15:03:25 +08:00
type GithubRelease struct {
2021-03-05 21:25:44 +08:00
TagName string `json:"tag_name"`
HtmlUrl string `json:"html_url"`
Body string `json:"body"`
2020-12-31 15:03:25 +08:00
}
2021-03-04 23:50:51 +08:00
// check update
2020-12-31 15:03:25 +08:00
func CheckUpdate() {
2021-01-12 14:58:33 +08:00
log.Infof("检查更新...")
2021-03-05 21:25:44 +08:00
url := "https://api.github.com/repos/Xhofe/alist/releases/latest"
resp, err := http.Get(url)
if err != nil {
log.Warnf("检查更新失败:%s", err.Error())
2020-12-31 15:03:25 +08:00
return
}
2021-03-05 21:25:44 +08:00
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Warnf("读取更新内容失败:%s", err.Error())
2020-12-31 15:03:25 +08:00
return
}
var release GithubRelease
2021-03-05 21:25:44 +08:00
err = json.Unmarshal(body, &release)
if err != nil {
log.Warnf("解析更新失败:%s", err.Error())
2020-12-31 15:03:25 +08:00
return
}
2021-03-05 21:25:44 +08:00
lasted := release.TagName[1:]
now := conf.VERSION[1:]
if utils.VersionCompare(lasted, now) != 1 {
log.Infof("当前已是最新版本:%s", conf.VERSION)
} else {
log.Infof("发现新版本:%s", release.TagName)
log.Infof("请至'%s'获取更新.", release.HtmlUrl)
2020-12-31 15:03:25 +08:00
}
2021-03-05 21:25:44 +08:00
}