From 3487db7b753f5cfba05206f770659885aca4c9f2 Mon Sep 17 00:00:00 2001 From: Alberto Planas Date: Tue, 17 Dec 2019 17:21:11 +0100 Subject: [PATCH] metadata: add simple version evaluator --- rust2rpm/metadata.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/rust2rpm/metadata.py b/rust2rpm/metadata.py index f0d7f3d..ac87bb8 100644 --- a/rust2rpm/metadata.py +++ b/rust2rpm/metadata.py @@ -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):