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

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
    }