mirror of
https://github.com/netbirdio/netbird.git
synced 2026-08-10 03:55:25 -04:00
32 lines
721 B
Go
32 lines
721 B
Go
package version
|
|
|
|
import (
|
|
"strings"
|
|
|
|
v "github.com/hashicorp/go-version"
|
|
)
|
|
|
|
// sanitizeVersion removes anything after the pre-release tag (e.g., "-dev", "-alpha", etc.)
|
|
func sanitizeVersion(version string) string {
|
|
parts := strings.Split(version, "-")
|
|
return parts[0]
|
|
}
|
|
|
|
// MeetsMinVersion checks if the peer's version meets or exceeds the minimum required version
|
|
func MeetsMinVersion(minVer, peerVer string) (bool, error) {
|
|
peerVer = sanitizeVersion(peerVer)
|
|
minVer = sanitizeVersion(minVer)
|
|
|
|
peerNBVer, err := v.NewVersion(peerVer)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
constraints, err := v.NewConstraint(">= " + minVer)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
return constraints.Check(peerNBVer), nil
|
|
}
|