#!/usr/bin/python3
# -*- coding: utf-8 -*- vim:shiftwidth=4:expandtab:
#
# RPM: Compare two package versions
#
# SPDX-FileCopyrightText: 2025 SATOH Fumiyasu @ OSSTech Corp., Japan
# SPDX-License-Identifier: GPL-3.0-or-later
#

import sys
import rpm


def stringToEVR(verstring):
    i = verstring.find(":")
    if i == -1:
        epoch = None
    else:
        epoch = verstring[:i]
    i += 1
    j = verstring.find("-", i)
    if j == -1:
        version = verstring[i:]
        release = None
    else:
        version = verstring[i:j]
        release = verstring[j + 1:]
    return (epoch, version, release)

def main(v1, op, v2):
    rc = rpm.labelCompare(stringToEVR(v1), stringToEVR(v2))

    if rc == 0 and op in ("==", "<=", ">="):
        return True
    elif rc < 0 and op in ("<", "<="):
        return True
    elif rc > 0 and op in (">", ">="):
        return True

    return False


if __name__ == "__main__":
    if len(sys.argv) != 4 or sys.argv[2] not in ("<", "<=", "==", ">=", ">"):
        print(f"Usage: {sys.argv[0]} VER1 OP VER2")
        sys.exit(1)

    sys.exit(0 if main(*sys.argv[1:4]) else 1)
