72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
package models
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"os/exec"
|
|
"regexp"
|
|
"strings"
|
|
|
|
"github.com/beego/beego/v2/client/httplib"
|
|
"github.com/beego/beego/v2/core/logs"
|
|
)
|
|
|
|
var version = "20210927"
|
|
var describe = "日常更新"
|
|
var AppName = "xdd"
|
|
var pname = regexp.MustCompile(`/([^/\s]+)`).FindStringSubmatch(os.Args[0])[1]
|
|
|
|
func initVersion() {
|
|
if Config.Version != "" {
|
|
version = Config.Version
|
|
}
|
|
logs.Info("检查更新" + version)
|
|
value, err := httplib.Get(GhProxy + "https://raw.githubusercontent.com/764763903a/xdd-plus/main/models/version.go").String()
|
|
if err != nil {
|
|
logs.Info("更新版本的失败")
|
|
} else {
|
|
// name := AppName + "_" + runtime.GOOS + "_" + runtime.GOARCH
|
|
if match := regexp.MustCompile(`var version = "(\d{10})"`).FindStringSubmatch(value); len(match) != 0 {
|
|
des := regexp.MustCompile(`var describe = "([^"]+)"`).FindStringSubmatch(value)
|
|
if len(des) != 0 {
|
|
describe = des[1]
|
|
}
|
|
if match[1] > version {
|
|
err := Update(&Sender{})
|
|
if err != nil {
|
|
logs.Warn("更新失败,", err)
|
|
return
|
|
}
|
|
(&JdCookie{}).Push("小滴滴更新:" + describe)
|
|
Daemon()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func Update(sender *Sender) error {
|
|
sender.Reply("小滴滴开始拉取代码")
|
|
rtn, err := exec.Command("sh", "-c", "cd "+ExecPath+" && git stash && git pull").Output()
|
|
if err != nil {
|
|
return errors.New("小滴滴拉取代失败:" + err.Error())
|
|
}
|
|
t := string(rtn)
|
|
if !strings.Contains(t, "changed") {
|
|
if strings.Contains(t, "Already") || strings.Contains(t, "已经是最新") {
|
|
return errors.New("小滴滴已是最新版啦")
|
|
} else {
|
|
return errors.New("小滴滴拉取代失败:" + t)
|
|
}
|
|
} else {
|
|
sender.Reply("小滴滴拉取代码成功")
|
|
}
|
|
sender.Reply("小滴滴正在编译程序")
|
|
rtn, err = exec.Command("sh", "-c", "cd "+ExecPath+" && go build -o "+pname).Output()
|
|
if err != nil {
|
|
return errors.New("小滴滴编译失败:" + err.Error())
|
|
} else {
|
|
sender.Reply("小滴滴编译成功")
|
|
}
|
|
return nil
|
|
}
|