/ internal / tools / version.go
version.go
 1  package tools
 2  
 3  import (
 4  	"strconv"
 5  	"strings"
 6  )
 7  
 8  // compareVersions compares two semver-like version strings (a vs b).
 9  // Returns -1, 0, or 1.
10  func compareVersions(a, b string) int {
11  	aParts := strings.Split(a, ".")
12  	bParts := strings.Split(b, ".")
13  	for i := 0; i < len(aParts) || i < len(bParts); i++ {
14  		var av, bv int
15  		if i < len(aParts) {
16  			av, _ = strconv.Atoi(aParts[i])
17  		}
18  		if i < len(bParts) {
19  			bv, _ = strconv.Atoi(bParts[i])
20  		}
21  		if av < bv {
22  			return -1
23  		}
24  		if av > bv {
25  			return 1
26  		}
27  	}
28  	return 0
29  }