Select Git revision
version.go
version.go 1.54 KiB
package version
import (
"strings"
"strconv"
)
const (
major = 1
minor = 4
bugfix = 1
)
type Version struct {
major int
minor int
bugfix int
}
var version Version = FromInt(major, minor, bugfix)
func FromInt(major, minor, bugfix int) Version {
return Version{major, minor, bugfix}
}
// Format: "x.y.z"
func FromString(s string) (Version, error) {
f := strings.Split(s, ".")
major, _ := strconv.Atoi(f[0])
minor, _ := strconv.Atoi(f[1])
bugfix, _ := strconv.Atoi(f[2])
return Version{major, minor, bugfix}, nil
}
func Get() Version {
return version
}
func (v Version) String() string {
return strconv.Itoa(v.major)+"."+strconv.Itoa(v.minor)+"."+strconv.Itoa(v.bugfix)
}
func (v Version) StringWithoutBugfix() string {
return strconv.Itoa(v.major)+"."+strconv.Itoa(v.minor)+".x"
}
// Returns true if v is older than candidate
func (v Version) IsOlder(candidate Version) bool {
v1 := v.getMajorMinor()
v2 := candidate.getMajorMinor()
if v1 > v2 {
return false
} else if v1 < v2 {
return true
} else {
bugfix1 := v.getBugfix()
bugfix2 := candidate.getBugfix()
return bugfix1 < bugfix2
}
}
// Returns true if v is compatible with candidate
func (v Version) IsCompatible(candidate Version) bool {
v1 := v.getMajorMinor()
v2 := candidate.getMajorMinor()
return v1 == v2
}
func (v Version) getMajorMinorAsString() string {
return strconv.Itoa(v.major)+strconv.Itoa(v.minor)
}
func (v Version) getMajorMinor() int {
n, _ := strconv.Atoi(v.getMajorMinorAsString())
return n
}
func (v Version) getBugfix() int {
return v.bugfix
}