xdd-plus/models/version.go

87 lines
2.5 KiB
Go
Raw Normal View History

2021-08-15 09:48:05 +08:00
package models
import (
2021-08-19 11:06:07 +08:00
"errors"
2021-08-15 09:48:05 +08:00
"os"
2021-08-19 08:40:38 +08:00
"os/exec"
2021-08-15 09:48:05 +08:00
"regexp"
2021-08-19 08:40:38 +08:00
"strings"
2021-08-15 09:48:05 +08:00
"github.com/beego/beego/v2/client/httplib"
"github.com/beego/beego/v2/core/logs"
)
2021-08-19 11:40:00 +08:00
var version = "2021081904"
2021-08-15 09:48:05 +08:00
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/cdle/xdd/main/models/version.go").String()
if err != nil {
2021-08-19 08:40:38 +08:00
logs.Info("更新版本的失败")
2021-08-15 09:48:05 +08:00
} else {
2021-08-19 08:40:38 +08:00
// name := AppName + "_" + runtime.GOOS + "_" + runtime.GOARCH
2021-08-15 09:48:05 +08:00
if match := regexp.MustCompile(`var version = "(\d{10})"`).FindStringSubmatch(value); len(match) != 0 {
if match[1] > version {
2021-08-19 09:41:20 +08:00
(&JdCookie{}).Push("版本过低,自动更新")
2021-08-19 08:40:38 +08:00
err := Update()
2021-08-15 09:48:05 +08:00
if err != nil {
2021-08-19 08:40:38 +08:00
logs.Warn("更新失败,", err)
2021-08-19 09:31:09 +08:00
return
2021-08-15 09:48:05 +08:00
}
2021-08-19 08:40:38 +08:00
// rsp, err := httplib.Get(GhProxy + "https://github.com/cdle/jd_study/releases/download/main/" + name).Response()
// if err != nil {
// logs.Warn("无法下载更新")
// return
// }
// filename := ExecPath + "/." + pname
// f, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
// if err != nil {
// logs.Warn("无法创建更新临时文件:%v"+filename, err)
// return
// }
// _, err = io.Copy(f, rsp.Body)
// f.Close()
// if err != nil {
// logs.Warn("下载更新失败")
// return
// }
// if err := os.Rename(filename, ExecPath+"/"+pname); err != nil {
// logs.Warn("移动临时更新文件失败")
// }
2021-08-15 09:48:05 +08:00
Daemon()
}
}
}
}
2021-08-19 08:40:38 +08:00
func Update(msgs ...interface{}) error {
sendMessagee("小滴滴开始拉取代码", msgs...)
2021-08-19 08:53:50 +08:00
rtn, err := exec.Command("sh", "-c", "cd "+ExecPath+" && git stash && git pull").Output()
2021-08-19 08:40:38 +08:00
if err != nil {
2021-08-19 11:06:07 +08:00
return errors.New("小滴滴拉取代失败:" + err.Error())
2021-08-19 08:40:38 +08:00
}
t := string(rtn)
if !strings.Contains(t, "changed") {
if strings.Contains(t, "Already") || strings.Contains(t, "已经是最新") {
2021-08-19 11:06:07 +08:00
return errors.New("小滴滴已是最新版啦")
2021-08-19 08:40:38 +08:00
} else {
2021-08-19 11:06:07 +08:00
return errors.New("小滴滴拉取代失败:" + t)
2021-08-19 08:40:38 +08:00
}
} else {
sendMessagee("小滴滴拉取代码成功", msgs...)
}
sendMessagee("小滴滴正在编译程序", msgs...)
rtn, err = exec.Command("sh", "-c", "cd "+ExecPath+" && go build -o "+pname).Output()
if err != nil {
2021-08-19 11:06:07 +08:00
return errors.New("小滴滴编译失败:" + err.Error())
2021-08-19 08:40:38 +08:00
} else {
2021-08-19 16:14:05 +08:00
sendMessagee("小滴滴编译成功", msgs...)
2021-08-19 08:40:38 +08:00
}
return nil
}