mirror of https://github.com/gogits/gogs.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
689 B
36 lines
689 B
package version |
|
|
|
import ( |
|
"sort" |
|
) |
|
|
|
// Sorts a string slice of version number strings using version.CompareSimple() |
|
// |
|
// Example: |
|
// version.Sort([]string{"1.10-dev", "1.0rc1", "1.0", "1.0-dev"}) |
|
// Returns []string{"1.0-dev", "1.0rc1", "1.0", "1.10-dev"} |
|
// |
|
func Sort(versionStrings []string) { |
|
versions := versionSlice(versionStrings) |
|
sort.Sort(versions) |
|
} |
|
|
|
type versionSlice []string |
|
|
|
func (s versionSlice) Len() int { |
|
return len(s) |
|
} |
|
|
|
func (s versionSlice) Less(i, j int) bool { |
|
cmp := CompareSimple(Normalize(s[i]), Normalize(s[j])) |
|
if cmp == 0 { |
|
return s[i] < s[j] |
|
} |
|
return cmp < 0 |
|
} |
|
|
|
func (s versionSlice) Swap(i, j int) { |
|
tmp := s[j] |
|
s[j] = s[i] |
|
s[i] = tmp |
|
}
|
|
|