ob_version_helper.go 989 字节
Newer Older
O
ob-robot 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
package common

import (
	"fmt"
	"strconv"
	"strings"

	"github.com/pkg/errors"
)

func CompareVersion(v1, v2 string) (int64, error) {
	v1 = strings.SplitN(v1, "-", 2)[0]
	v2 = strings.SplitN(v2, "-", 2)[0]
	parts1 := strings.Split(v1, ".")
	parts2 := strings.Split(v2, ".")
	len1 := len(parts1)
	len2 := len(parts2)
	end := len1
	if len2 > len1 {
		end = len2
	}
	var n1, n2 int
	var err error
	for i := 0; i < end; i++ {
		if i < len(parts1) {
			n1, err = strconv.Atoi(parts1[i])
			if err != nil {
				return 0, err
			}
		} else {
			n1 = 0
		}
		if i < len(parts2) {
			n2, err = strconv.Atoi(parts2[i])
			if err != nil {
				return 0, err
			}
		} else {
			n2 = 0
		}
		if n1 == n2 {
			continue
		}
		return int64(n1 - n2), nil
	}
	return 0, nil
}

func ParseVersionComment(versionComment string) (string, error) {
	if len(versionComment) == 0 {
		return versionComment, errors.New(fmt.Sprintf("version_comment is empty"))
	}
	return strings.Split(versionComment, " ")[1], nil
}