From d85ccdd7762570f80373b738018d167e56849c6e Mon Sep 17 00:00:00 2001 From: Ophelia Beatrice de Sica Date: Sat, 24 May 2025 20:49:53 +0200 Subject: [PATCH] Fix crash on not supported function on remote --- src/pkgupdates/package.py | 17 +++++++++++++++-- src/pkgupdates/remote.py | 20 ++++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/pkgupdates/package.py b/src/pkgupdates/package.py index e9a5b64..9ee0fac 100755 --- a/src/pkgupdates/package.py +++ b/src/pkgupdates/package.py @@ -12,7 +12,9 @@ from .remote import ERemote, Remote rex_pkg_version = re.compile("-([0-9.]+)([_a-z0-9]+)*(-r[0-9]+)?[.]ebuild") -PkgVersion = collections.namedtuple("PkgVersion", ["name", "category", "version"]) +PkgVersion = collections.namedtuple("PkgVersion", + ["name", "category", "version"] + ) def get_packages(): @@ -85,7 +87,7 @@ def get_package_versions(meta): return versions, eversion -def check_package(pkg, meta): +def check_package(pkg, meta): # pylint: disable=R0911 """Check package for updates""" remote = Remote pkg_type = "UNKNOWN" @@ -100,7 +102,13 @@ def check_package(pkg, meta): print(pkg + ": Unsupported backend: " + pkg_type) return + if not remote.support_latest_commit(): + return + version = remote.get_latest_commit(meta["remote-id"]) + if version is None or version == '': + return + version = datetime.datetime.fromisoformat(version) version = version.strftime("%Y%m%d") latest_version = parse_version(version) @@ -110,16 +118,21 @@ def check_package(pkg, meta): print(pkg + ": Unsupported backend: " + pkg_type) return + if not remote.support_latest_release(): + return + tag = remote.get_latest_release(meta["remote-id"]) if tag is None or tag == "": print(pkg + ": HTTPError! " + meta["remote-id"]) return + latest_version = parse_version(tag) case EVersion.VCS: print(pkg + ": VCS package") return + case EVersion.UNKNOWN: print(pkg + ": Manual Compare") return diff --git a/src/pkgupdates/remote.py b/src/pkgupdates/remote.py index d36bea8..5af4405 100644 --- a/src/pkgupdates/remote.py +++ b/src/pkgupdates/remote.py @@ -110,16 +110,32 @@ class Remote: TYPE = ERemote.UNKNOWN NAME = "unkown remote type" + @classmethod + def support_latest_release(cls): + """Check if remote has latest release implemented""" + if cls.get_latest_release == Remote.get_latest_release: + print(f"Error: {cls.NAME} semantic version check not implemented!") + return False + return True + + @classmethod + def support_latest_commit(cls): + """Check if remote has latest commit implemented""" + if cls.get_latest_commit == Remote.get_latest_commit: + print(f"Error: {cls.NAME} date version check not implemented!") + return False + return True + @classmethod def get_latest_release(cls, pkg_repo): # pylint: disable=unused-argument """Get latest release - mostly for Semantic versioning""" - print(f"Error: {cls.NAME} not support semantic version check!") + print(f"Error: {cls.NAME} semantic version check not implemented!") return "" @classmethod def get_latest_commit(cls, pkg_repo): # pylint: disable=unused-argument """Get latest commit - mostly for date versioning""" - print(f"Error: {cls.NAME} not support date version check") + print(f"Error: {cls.NAME} date version check not implemented!") return ""