diff options
| -rw-r--r-- | backend/decky_loader/helpers.py | 16 | ||||
| -rw-r--r-- | backend/decky_loader/updater.py | 4 | ||||
| -rw-r--r-- | backend/poetry.lock | 13 | ||||
| -rw-r--r-- | backend/pyproject.toml | 1 |
4 files changed, 27 insertions, 7 deletions
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)) diff --git a/backend/poetry.lock b/backend/poetry.lock index 3f6d4622..a5bbc40c 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -570,6 +570,17 @@ files = [ setuptools = "*" [[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] name = "pefile" version = "2023.2.7" description = "Python PE parsing module" @@ -799,4 +810,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.13" -content-hash = "acc0fcc8adcba521e2bb9f6eba2d3b047b1fe045d0019c0766ed7dc3fc804253" +content-hash = "d41eda5e27d67b5d88cb3a71d2fcdf6c7170d92f6b5d0fb6ded455ae47319f5f" diff --git a/backend/pyproject.toml b/backend/pyproject.toml index eb9f3db6..9fbd2389 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -19,6 +19,7 @@ aiohttp-jinja2 = "^1.5.1" aiohttp-cors = "^0.7.0" watchdog = "^2.1.7" certifi = "*" +packaging = "^23.2" [tool.poetry.group.dev.dependencies] pyinstaller = "^5.13.0" |
