yanghui
2021-05-14 1097e9e700a127f445ee4d138af2d51435390d43
add compare
1个文件已修改
54 ■■■■ 已修改文件
version.go 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version.go
@@ -2,12 +2,17 @@
import (
    "encoding/json"
    "errors"
    "flag"
    "fmt"
    "math"
    "os"
    "strconv"
    "strings"
)
type (
    VaVersion int64
)
var (
@@ -39,21 +44,54 @@
    }
}
func VersionCode2Name(version int64) (string, error) {
    if version < 0 {
        return "", errors.New("Version can't be negetive")
func (v VaVersion) Valid() bool {
    if v < 0 {
        return false
    }
    majorVersion := version >> 32
    minorVersion := (version >> 16) & 0xffff
    buildNumber := version & 0xffff
    majorVersion := v >> 32
    if majorVersion > math.MaxUint16 {
        return false
    }
    return true
}
func (v VaVersion) Compare(v1 VaVersion) (int, error) {
    if !v.Valid() {
        return 0, errors.New("Invalid VaVersion left value")
    }
    if !v1.Valid() {
        return 0, errors.New("Invalid VaVersion right value")
    }
    if v > v1 {
        return 1, nil
    }
    if v < v1 {
        return -1, nil
    }
    return 0, nil
}
func (v VaVersion) String() (string, error) {
    if !v.Valid() {
        return "", errors.New("Invalid VaVersion value")
    }
    majorVersion := (v >> 32) & 0xffff
    minorVersion := (v >> 16) & 0xffff
    buildNumber := v & 0xffff
    name := fmt.Sprintf("%d.%d.%d", majorVersion, minorVersion, buildNumber)
    return name, nil
}
func VersionName2Code(version string) (int64, error) {
func VersionName2VaVersion(version string) (VaVersion, error) {
    subVersions := strings.Split(version, ".")
    if len(subVersions) != 3 {
        return 0, errors.New("Incorrect version format, version formats like 1.12.3")
@@ -88,5 +126,5 @@
    num := (majorVersion << 32) | (minorVersion << 16) | buildNumber
    return num, nil
    return VaVersion(num), nil
}