This commit is contained in:
wangle 2020-08-02 23:02:12 +08:00 committed by askuy
parent 82e40f9010
commit 732fdfa321
1 changed files with 41 additions and 27 deletions

View File

@ -16,8 +16,10 @@ package utils
import ( import (
"bytes" "bytes"
"encoding/json"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"net/http"
"os" "os"
"os/exec" "os/exec"
"path" "path"
@ -31,13 +33,15 @@ import (
"unicode" "unicode"
"github.com/beego/bee/config" "github.com/beego/bee/config"
"github.com/beego/bee/internal/pkg/git"
"github.com/beego/bee/internal/pkg/system" "github.com/beego/bee/internal/pkg/system"
beeLogger "github.com/beego/bee/logger" beeLogger "github.com/beego/bee/logger"
"github.com/beego/bee/logger/colors" "github.com/beego/bee/logger/colors"
) )
type tagName struct {
Name string `json:"name"`
}
func GetBeeWorkPath() string { func GetBeeWorkPath() string {
curpath, err := os.Getwd() curpath, err := os.Getwd()
if err != nil { if err != nil {
@ -508,34 +512,44 @@ func NoticeUpdateBee() {
beeLogger.Log.Warnf("Update noticeUpdateBee file err: %s", err) beeLogger.Log.Warnf("Update noticeUpdateBee file err: %s", err)
return return
} }
newVersion() beeLogger.Log.Info("Getting bee latest version...")
} versionLast := BeeLastVersion()
func newVersion() {
hs, _, workPath := SearchGOPATHs(config.GitRemotePath)
if hs == false {
beeLogger.Log.Warn("Fail to open repository")
}
repo, err := git.OpenRepository(workPath)
if err != nil {
beeLogger.Log.Fatalf("Fail to open repository, err: %s", err)
return
}
tags, err := repo.GetTags()
if err != nil {
beeLogger.Log.Fatalf("Fail to get tags, err: %s", err)
return
}
// v1.12.0 | V_1.12.0 => 1.12.0
re, _ := regexp.Compile(`[0-9.]+`)
var versionLast string
versionList := re.FindStringSubmatch(tags[0])
if len(versionList) >= 1 {
versionLast = versionList[0]
}
versionNow := config.Version versionNow := config.Version
if versionLast == ""{
beeLogger.Log.Warn("Get latest version err")
return
}
if versionNow != versionLast { if versionNow != versionLast {
beeLogger.Log.Warnf("Update available %s ==> %s", versionNow, versionLast) beeLogger.Log.Warnf("Update available %s ==> %s", versionNow, versionLast)
beeLogger.Log.Warn("Run `bee update` to update") beeLogger.Log.Warn("Run `bee update` to update")
} }
beeLogger.Log.Info("Your bee are up to date")
}
func BeeLastVersion() (version string) {
var url = "https://api.github.com/repos/beego/bee/tags"
resp, err := http.Get(url)
if err != nil {
beeLogger.Log.Warnf("Get bee tags from github error: %s", err)
return
}
defer resp.Body.Close()
bodyContent, _ := ioutil.ReadAll(resp.Body)
var tags []tagName
if err = json.Unmarshal(bodyContent, &tags); err != nil {
beeLogger.Log.Warnf("Unmarshal tags body error: %s", err)
return
}
if len(tags) < 1 {
beeLogger.Log.Warn("There is no tags")
return
}
last := tags[0]
re, _ := regexp.Compile(`[0-9.]+`)
versionList := re.FindStringSubmatch(last.Name)
if len(versionList) > 0 {
return versionList[0]
}
beeLogger.Log.Warn("There is no tags")
return
} }