summaryrefslogtreecommitdiff
path: root/internal/release/release.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/release/release.go')
-rw-r--r--internal/release/release.go17
1 files changed, 15 insertions, 2 deletions
diff --git a/internal/release/release.go b/internal/release/release.go
index 0c8b33f..c6eca97 100644
--- a/internal/release/release.go
+++ b/internal/release/release.go
@@ -11,6 +11,7 @@ import (
"sort"
"strconv"
"strings"
+ "unicode"
"codeberg.org/snonux/gitsyncer/internal/aitool"
"codeberg.org/snonux/gitsyncer/internal/httpclient"
@@ -182,9 +183,21 @@ func compareVersions(v1, v2 string) int {
}
func parseVersionPart(part string) int {
- n, err := strconv.Atoi(part)
+ start := 0
+ if part != "" && (part[0] == '+' || part[0] == '-') {
+ start = 1
+ }
+
+ end := start
+ for end < len(part) && unicode.IsDigit(rune(part[end])) {
+ end++
+ }
+ if end == start {
+ return 0
+ }
+
+ n, err := strconv.Atoi(part[:end])
if err != nil {
- // Keep current behavior for non-numeric segments.
return 0
}