github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/utils/version_check.go (about) 1 package utils 2 3 import ( 4 "strconv" 5 "strings" 6 ) 7 8 type Version struct { 9 Revisions []int 10 } 11 12 func NewVersion(version string) Version { 13 split := strings.Split(version, ".") 14 15 retVersion := Version{[]int{}} 16 for _, v := range split { 17 parsed, _ := strconv.Atoi(v) 18 retVersion.Revisions = append(retVersion.Revisions, parsed) 19 } 20 return retVersion 21 } 22 23 func (ver Version) GreaterThanOrEqual(target Version) bool { 24 if len(ver.Revisions) > 0 && len(target.Revisions) == 0 { 25 return true 26 } else if len(target.Revisions) > 0 && len(ver.Revisions) == 0 { 27 for _, v := range target.Revisions { 28 if v != 0 { 29 return false 30 } 31 } 32 return true 33 } 34 35 if ver.Revisions[0] < target.Revisions[0] { 36 return false 37 } else if (len(ver.Revisions) > 1 || len(target.Revisions) > 1) && ver.Revisions[0] == target.Revisions[0] { 38 return Version{ver.Revisions[1:]}.GreaterThanOrEqual(Version{target.Revisions[1:]}) 39 } 40 41 return true 42 }