diff --git a/kernel/model/updater.go b/kernel/model/updater.go index ade60fc42..daceeaeb9 100644 --- a/kernel/model/updater.go +++ b/kernel/model/updater.go @@ -26,6 +26,8 @@ import ( "path" "path/filepath" "runtime" + "strconv" + "strings" "sync" "time" @@ -214,6 +216,45 @@ func GetAnnouncements() (ret []*Announcement) { } return } +func ver2num(a string) int { + var version string + var suffixpos int + var suffixStr string + var suffix string + a = strings.Trim(a, " ") + if strings.Contains(a, "alpha") { + suffixpos = strings.Index(a, "-alpha") + version = a[0:suffixpos] + suffixStr = a[suffixpos+6 : len(a)] + suffix = "0" + fmt.Sprintf("%03s", suffixStr) + } else if strings.Contains(a, "beta") { + suffixpos = strings.Index(a, "-beta") + version = a[0:suffixpos] + suffixStr = a[suffixpos+5 : len(a)] + suffix = "1" + fmt.Sprintf("%03s", suffixStr) + } else { + version = a + suffix = "5000" + } + split := strings.Split(version, ".") + var verArr []string + + verArr = append(verArr, "1") + var tmp string + for i := 0; i < 3; i++ { + if i < len(split) { + tmp = split[i] + } else { + tmp = "0" + } + verArr = append(verArr, fmt.Sprintf("%04s", tmp)) + } + verArr = append(verArr, suffix) + + ver := strings.Join(verArr, "") + verNum, _ := strconv.Atoi(ver) + return verNum +} func CheckUpdate(showMsg bool) { if !showMsg { @@ -229,7 +270,7 @@ func CheckUpdate(showMsg bool) { release := result["release"].(string) var msg string var timeout int - if ver == util.Ver { + if ver2num(ver) <= ver2num(util.Ver) { msg = Conf.Language(10) timeout = 3000 } else {