in agent/dockerclient/dockerapi_compare_versions.go [38:88]
func (lhs DockerAPIVersion) Matches(selector string) (bool, error) {
lhsVersion, err := parseDockerVersions(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 := parseDockerVersions(selector[2:])
if err != nil {
return false, err
}
return compareDockerVersions(lhsVersion, rhsVersion) >= 0, nil
} else if strings.HasPrefix(selector, ">") {
rhsVersion, err := parseDockerVersions(selector[1:])
if err != nil {
return false, err
}
return compareDockerVersions(lhsVersion, rhsVersion) > 0, nil
} else if strings.HasPrefix(selector, "<=") {
rhsVersion, err := parseDockerVersions(selector[2:])
if err != nil {
return false, err
}
return compareDockerVersions(lhsVersion, rhsVersion) <= 0, nil
} else if strings.HasPrefix(selector, "<") {
rhsVersion, err := parseDockerVersions(selector[1:])
if err != nil {
return false, err
}
return compareDockerVersions(lhsVersion, rhsVersion) < 0, nil
}
rhsVersion, err := parseDockerVersions(selector)
if err != nil {
return false, err
}
return compareDockerVersions(lhsVersion, rhsVersion) == 0, nil
}