@@ -46,18 +46,24 @@ func version() *cobra.Command {
4646// Returns: -1 if v1 < v2, 0 if v1 == v2, 1 if v1 > v2
4747func compareVersion (v1 , v2 string ) (int , error ) {
4848 parseVersion := func (v string ) ([3 ]int , error ) {
49- parts := strings .Split (strings .TrimPrefix (v , "v" ), "." )
49+ origV := v
50+ v = strings .TrimPrefix (v , "v" )
51+ // Strip pre-release suffixes like -rc2, -beta, -alpha, etc.
52+ if idx := strings .IndexAny (v , "-+" ); idx != - 1 {
53+ v = v [:idx ]
54+ }
55+ parts := strings .Split (v , "." )
5056 if len (parts ) != 3 {
51- return [3 ]int {}, fmt .Errorf ("invalid format: %s" , v )
57+ return [3 ]int {}, fmt .Errorf ("invalid format: %s" , origV )
5258 }
5359 var nums [3 ]int
5460 for i , p := range parts {
5561 n , err := strconv .Atoi (p )
5662 if err != nil {
57- return [3 ]int {}, fmt .Errorf ("invalid format: %s" , v )
63+ return [3 ]int {}, fmt .Errorf ("invalid format: %s" , origV )
5864 }
5965 if n < 0 {
60- return [3 ]int {}, fmt .Errorf ("invalid format: %s" , v )
66+ return [3 ]int {}, fmt .Errorf ("invalid format: %s" , origV )
6167 }
6268 nums [i ] = n
6369 }
0 commit comments