From 1b9c390ea25c16af91d1d4562c77daa96dc0b92e Mon Sep 17 00:00:00 2001 From: phantom Date: Sun, 30 Nov 2025 13:22:55 -0600 Subject: [PATCH] Implement version checking --- main.py | 48 +++++++++++++++++++++++++++--------------------- versioning.py | 3 --- 2 files changed, 27 insertions(+), 24 deletions(-) delete mode 100644 versioning.py diff --git a/main.py b/main.py index ac837f8..6d4fb9d 100644 --- a/main.py +++ b/main.py @@ -70,51 +70,57 @@ class Autopkg: # Grab data from data file data_section = f"tags.{app}" - data_tag = [] + data_tag = [list.append(i[1]) for i in self.data.items(data_section)] - for i in self.data.items(conf_section): - tag.append(i[1]) + app_name = info["name"] - + # Ping API response = requests.get(info["url"]) # Fetch data from Git API # Parse through JSON data if response.status_code == 200: json = response.json() - tag = json["tag_name"] # App version from API + api_tag = json["tag_name"] # App version from API pre_release = json["prerelease"] # Package new versions if available - if tag != ini_version and not pre_release: - logging.info(f"Found new version ({tag}) for {app}, packaging..") + api_tag_higher = is_tag_higher(api_tag, data_tag, info) - try: - if Package(app, tag).build(): - ini_version = str(tag) + if not pre_release and api_tag_higher[0]: + logging.info(f"Found new version ({api_tag}) for {app_name}, packaging..") + + try: # REMOVE!!! + if Package(app, api_tag).build(): + ini_version = str(api_tag) self.write_data() except Exception as e: - logging.error(f"Error starting docker container for {app}") + logging.error(f"Error starting docker container for {app_name}") + else: + logging.log(f"No new versions were found for {app_name}") + else: + logging.error(f"Failed to ping {app_name}'s API.") -def version_is_higher(tag: str, ini_tag: tuple, app_info: dict) -> (str, None): +def is_tag_higher(api_tag: str, data_tag: list, data_info: dict) -> tuple: regular_scheme = r"^v(\d+)\.(\d+)\.(\d+)$" + # Derive version from API tag try: - version = re.match(info["versioningScheme"], tag) + version = re.match(data_info, api_tag) except: - version = re.match(regular_scheme, tag) + version = re.match(regular_scheme, api_tag) - if version: - tag_major = int(version.group(1)) - tag_minor = int(version.group(2)) - tag_patch = int(version.group(3)) - else: + if not version: logging.warning(f"New tag for {app_info["name"]} doesn't follow versioning schemes, ignoring..") - return None + return (False) - if + # Compare versions + re_tag = map(int, version.groups()) + is_higher = tuple(map(lambda a, b: a >= b, re_tag, data_tag)) + + return (True, re_tag) if all(is_higher) else (False) if __name__ == "__main__": diff --git a/versioning.py b/versioning.py deleted file mode 100644 index 435cf50..0000000 --- a/versioning.py +++ /dev/null @@ -1,3 +0,0 @@ -import re - -