From 69d05a36376083c366b10c21bbca93ab2497cccf Mon Sep 17 00:00:00 2001 From: Simon Frei Date: Sat, 24 Mar 2018 09:08:58 +0100 Subject: [PATCH] Handle versions as returned from transformVersion (#16) --- cmd/ursrv/analytics.go | 26 ++++++++++++++++---------- cmd/ursrv/main.go | 7 +++++-- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/cmd/ursrv/analytics.go b/cmd/ursrv/analytics.go index 8bbfe67c..21d5f14b 100644 --- a/cmd/ursrv/analytics.go +++ b/cmd/ursrv/analytics.go @@ -190,27 +190,33 @@ func versionLess(a, b string) bool { } } - if apre != bpre { - return apre < bpre - } - + // Longer version is newer, when the preceding parts are equal if len(arel) != len(brel) { return len(arel) < len(brel) } + if apre != bpre { + // "(+dev)" versions are ahead + if apre == plusStr { + return false + } + if bpre == plusStr { + return true + } + return apre < bpre + } + // don't actually care how the prerelease stuff compares for our purposes return false } -// Split a version into parts. +// Split a version as returned from transformVersion into parts. // "1.2.3-beta.2" -> []int{1, 2, 3}, "beta.2"} func versionParts(v string) ([]int, string) { - if strings.HasPrefix(v, "v") || strings.HasPrefix(v, "V") { - // Strip initial 'v' or 'V' prefix if present. - v = v[1:] + parts := strings.SplitN(v[1:], " ", 2) // " (+dev)" versions + if len(parts) == 1 { + parts = strings.SplitN(parts[0], "-", 2) // "-rc.1" type versions } - parts := strings.SplitN(v, "+", 2) - parts = strings.SplitN(parts[0], "-", 2) fields := strings.Split(parts[0], ".") release := make([]int, len(fields)) diff --git a/cmd/ursrv/main.go b/cmd/ursrv/main.go index 093a6fe7..2a2d5910 100644 --- a/cmd/ursrv/main.go +++ b/cmd/ursrv/main.go @@ -1350,7 +1350,10 @@ func ensureDir(dir string, mode int) { } } -var plusRe = regexp.MustCompile(`\+.*$`) +var ( + plusRe = regexp.MustCompile(`\+.*$`) + plusStr = "(+dev)" +) // transformVersion returns a version number formatted correctly, with all // development versions aggregated into one. @@ -1361,7 +1364,7 @@ func transformVersion(v string) string { if !strings.HasPrefix(v, "v") { v = "v" + v } - v = plusRe.ReplaceAllString(v, " (+dev)") + v = plusRe.ReplaceAllString(v, " "+plusStr) return v }