|
15 | 15 | package update |
16 | 16 |
|
17 | 17 | import ( |
18 | | - "github.com/hashicorp/go-version" |
| 18 | + "golang.org/x/mod/semver" |
| 19 | + |
19 | 20 | "github.com/slackapi/slack-cli/internal/slackerror" |
20 | 21 | ) |
21 | 22 |
|
22 | 23 | // SemVerGreaterThan returns true if release is greater than current |
23 | 24 | func SemVerGreaterThan(release string, current string) (bool, error) { |
24 | | - releaseVersion, err := version.NewVersion(release) |
25 | | - if err != nil { |
26 | | - return false, slackerror.New(slackerror.ErrInvalidSemVer).WithRootCause(err) |
| 25 | + r := ensureVPrefix(release) |
| 26 | + c := ensureVPrefix(current) |
| 27 | + if !semver.IsValid(r) { |
| 28 | + return false, slackerror.New(slackerror.ErrInvalidSemVer). |
| 29 | + WithMessage("Value %s is not a semantic version", release) |
27 | 30 | } |
28 | | - currentVersion, err := version.NewVersion(current) |
29 | | - if err != nil { |
30 | | - return false, slackerror.New(slackerror.ErrInvalidSemVer).WithRootCause(err) |
| 31 | + if !semver.IsValid(c) { |
| 32 | + return false, slackerror.New(slackerror.ErrInvalidSemVer). |
| 33 | + WithMessage("Value %s is not a semantic version", current) |
31 | 34 | } |
32 | | - return releaseVersion.GreaterThan(currentVersion), nil |
| 35 | + return semver.Compare(r, c) > 0, nil |
33 | 36 | } |
34 | 37 |
|
35 | 38 | // SemVerLessThan returns true if release is less than current |
36 | 39 | func SemVerLessThan(release string, current string) (bool, error) { |
37 | | - releaseVersion, err := version.NewVersion(release) |
38 | | - if err != nil { |
39 | | - return false, slackerror.New(slackerror.ErrInvalidSemVer).WithRootCause(err) |
| 40 | + r := ensureVPrefix(release) |
| 41 | + c := ensureVPrefix(current) |
| 42 | + if !semver.IsValid(r) { |
| 43 | + return false, slackerror.New(slackerror.ErrInvalidSemVer). |
| 44 | + WithMessage("Value %s is not a semantic version", release) |
| 45 | + } |
| 46 | + if !semver.IsValid(c) { |
| 47 | + return false, slackerror.New(slackerror.ErrInvalidSemVer). |
| 48 | + WithMessage("Value %s is not a semantic version", current) |
40 | 49 | } |
41 | | - currentVersion, err := version.NewVersion(current) |
42 | | - if err != nil { |
43 | | - return false, slackerror.New(slackerror.ErrInvalidSemVer).WithRootCause(err) |
| 50 | + return semver.Compare(r, c) < 0, nil |
| 51 | +} |
| 52 | + |
| 53 | +func ensureVPrefix(v string) string { |
| 54 | + if len(v) > 0 && v[0] != 'v' { |
| 55 | + return "v" + v |
44 | 56 | } |
45 | | - return releaseVersion.LessThan(currentVersion), nil |
| 57 | + return v |
46 | 58 | } |
0 commit comments