metadata: add simple version evaluator

This commit is contained in:
Alberto Planas 2019-12-17 17:21:11 +01:00
parent 31bfe95446
commit 3487db7b75

View file

@ -164,6 +164,35 @@ class CargoSemVer:
raise ValueError(f'Found unhandled kind: {requirement}')
return normalized
@staticmethod
def eval_(v1, op, v2):
if op == CargoSemVer.KIND_SHORTEQ:
return all((v1.major == v2.major,
v1.minor == v2.minor,
v1.patch == v2.patch))
elif op == CargoSemVer.KIND_GT:
return ((v1.major > v2.major) or
(v1.major == v2.major and v1.minor > v2.minor) or
(v1.major == v2.major and v1.minor == v2.minor and
v1.patch > v2.patch))
elif op == CargoSemVer.KIND_GTE:
return ((v1.major >= v2.major) or
(v1.major == v2.major and v1.minor >= v2.minor) or
(v1.major == v2.major and v1.minor == v2.minor and
v1.patch >= v2.patch))
elif op == CargoSemVer.KIND_LT:
return ((v1.major < v2.major) or
(v1.major == v2.major and v1.minor < v2.minor) or
(v1.major == v2.major and v1.minor == v2.minor and
v1.patch < v2.patch))
elif op == CargoSemVer.KIND_LTE:
return ((v1.major <= v2.major) or
(v1.major == v2.major and v1.minor <= v2.minor) or
(v1.major == v2.major and v1.minor == v2.minor and
v1.patch <= v2.patch))
else:
raise ValueError(f'Cannot evaluate operator: {op}')
class Target:
def __init__(self, name, kind):