metadata: add simple version evaluator
This commit is contained in:
parent
31bfe95446
commit
3487db7b75
1 changed files with 29 additions and 0 deletions
|
@ -164,6 +164,35 @@ class CargoSemVer:
|
||||||
raise ValueError(f'Found unhandled kind: {requirement}')
|
raise ValueError(f'Found unhandled kind: {requirement}')
|
||||||
return normalized
|
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:
|
class Target:
|
||||||
def __init__(self, name, kind):
|
def __init__(self, name, kind):
|
||||||
|
|
Loading…
Reference in a new issue