Skip to content
Snippets Groups Projects
Select Git revision
  • 6c54feaea27cbf79ae52a8fbfaf50a34a299281c
  • live_exam_os_ubuntu default protected
2 results

version.go

Blame
  • version.go 1.66 KiB
    package version
    
    import (
        "strings"
        "strconv"
    )
    
    const (
        major  = 1
        minor  = 8
        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
    }