in agent/utils/compare_versions.go [42:92]
func (lhs Version) Matches(selector string) (bool, error) {
lhsVersion, err := parseSemver(string(lhs))
if err != nil {
return false, err
}
if strings.Contains(selector, ",") {
orElements := strings.Split(selector, ",")
for _, el := range orElements {
if elMatches, err := lhs.Matches(el); err != nil {
return false, err
} else if elMatches {
return true, nil
}
}
// No elements matched
return false, nil
}
if strings.HasPrefix(selector, ">=") {
rhsVersion, err := parseSemver(selector[2:])
if err != nil {
return false, err
}
return compareSemver(lhsVersion, rhsVersion) >= 0, nil
} else if strings.HasPrefix(selector, ">") {
rhsVersion, err := parseSemver(selector[1:])
if err != nil {
return false, err
}
return compareSemver(lhsVersion, rhsVersion) > 0, nil
} else if strings.HasPrefix(selector, "<=") {
rhsVersion, err := parseSemver(selector[2:])
if err != nil {
return false, err
}
return compareSemver(lhsVersion, rhsVersion) <= 0, nil
} else if strings.HasPrefix(selector, "<") {
rhsVersion, err := parseSemver(selector[1:])
if err != nil {
return false, err
}
return compareSemver(lhsVersion, rhsVersion) < 0, nil
}
rhsVersion, err := parseSemver(selector)
if err != nil {
return false, err
}
return compareSemver(lhsVersion, rhsVersion) == 0, nil
}