From 41c62c3a3436e0e2968bfaea9c612ba2873fcdfb Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 14 Nov 2023 10:21:49 +0300 Subject: refactor(backend): get version from package metadata --- backend/decky_loader/helpers.py | 16 ++++++++++++++-- backend/decky_loader/updater.py | 4 ---- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'backend/decky_loader') diff --git a/backend/decky_loader/helpers.py b/backend/decky_loader/helpers.py index e3770c63..0cd6518b 100644 --- a/backend/decky_loader/helpers.py +++ b/backend/decky_loader/helpers.py @@ -5,6 +5,7 @@ import os import subprocess from hashlib import sha256 from io import BytesIO +import importlib.metadata import certifi from aiohttp.web import Request, Response, middleware @@ -13,6 +14,7 @@ from aiohttp import ClientSession from .localplatform import localplatform from .customtypes import UserType from logging import getLogger +from packaging.version import Version REMOTE_DEBUGGER_UNIT = "steam-web-debug-portforward.service" @@ -49,8 +51,18 @@ def mkdir_as_user(path: str): # Fetches the version of loader def get_loader_version() -> str: try: - with open(os.path.join(os.getcwd(), ".loader.version"), "r", encoding="utf-8") as version_file: - return version_file.readline().strip() + # Normalize Python-style version to conform to Decky style + v = Version(importlib.metadata.version("decky_loader")) + + version_str = f'v{v.major}.{v.minor}.{v.micro}' + + if v.pre: + version_str += f'-pre{v.pre[1]}' + + if v.post: + version_str += f'-post{v.post}' + + return version_str except Exception as e: logger.warn(f"Failed to execute get_loader_version(): {str(e)}") return "unknown" diff --git a/backend/decky_loader/updater.py b/backend/decky_loader/updater.py index f8aef429..a7234a8b 100644 --- a/backend/decky_loader/updater.py +++ b/backend/decky_loader/updater.py @@ -158,7 +158,6 @@ class Updater: logger.error("Unable to update as remoteVer is missing") return - version = self.remoteVer["tag_name"] download_url = None download_filename = "PluginLoader" if ON_LINUX else "PluginLoader.exe" download_temp_filename = download_filename + ".new" @@ -217,9 +216,6 @@ class Updater: self.context.loop.create_task(tab.evaluate_js(f"window.DeckyUpdater.updateProgress({new_progress})", False, False, False)) progress = new_progress - with open(path.join(getcwd(), ".loader.version"), "w", encoding="utf-8") as out: - out.write(version) - if ON_LINUX: remove(path.join(getcwd(), download_filename)) shutil.move(path.join(getcwd(), download_temp_filename), path.join(getcwd(), download_filename)) -- cgit v1.2.3