forked from cloudfoundry/cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
version_check.go
42 lines (35 loc) · 922 Bytes
/
version_check.go
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
package utils
import (
"strconv"
"strings"
)
type Version struct {
Revisions []int
}
func NewVersion(version string) Version {
split := strings.Split(version, ".")
retVersion := Version{[]int{}}
for _, v := range split {
parsed, _ := strconv.Atoi(v)
retVersion.Revisions = append(retVersion.Revisions, parsed)
}
return retVersion
}
func (ver Version) GreaterThanOrEqual(target Version) bool {
if len(ver.Revisions) > 0 && len(target.Revisions) == 0 {
return true
} else if len(target.Revisions) > 0 && len(ver.Revisions) == 0 {
for _, v := range target.Revisions {
if v != 0 {
return false
}
}
return true
}
if ver.Revisions[0] < target.Revisions[0] {
return false
} else if (len(ver.Revisions) > 1 || len(target.Revisions) > 1) && ver.Revisions[0] == target.Revisions[0] {
return Version{ver.Revisions[1:]}.GreaterThanOrEqual(Version{target.Revisions[1:]})
}
return true
}