netmaker/logic/version.go

32 lines
635 B
Go
Raw Normal View History

2022-11-15 03:41:34 +08:00
package logic
import (
"strings"
"unicode"
"github.com/hashicorp/go-version"
)
const MinVersion = "v0.17.0"
// IsVersionCompatible checks that the version passed is compabtible (>=) with MinVersion
func IsVersionComptatible(ver string) bool {
// during dev, assume developers know what they are doing
if ver == "dev" {
return true
}
trimmed := strings.TrimFunc(ver, func(r rune) bool {
return !unicode.IsNumber(r)
})
v, err := version.NewVersion(trimmed)
if err != nil {
return false
}
constraint, err := version.NewConstraint(">= " + MinVersion)
if err != nil {
return false
}
return constraint.Check(v)
}