summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorK900 <me@0upti.me>2023-11-14 10:21:49 +0300
committerAAGaming <aagaming@riseup.net>2023-12-29 18:34:19 -0500
commit41c62c3a3436e0e2968bfaea9c612ba2873fcdfb (patch)
tree4865a5ae7d681c8195fe2c6fd87916d9c2050251
parent31a6202da96922162f8a567c137e3313a554d8d3 (diff)
downloaddecky-loader-41c62c3a3436e0e2968bfaea9c612ba2873fcdfb.tar.gz
decky-loader-41c62c3a3436e0e2968bfaea9c612ba2873fcdfb.zip
refactor(backend): get version from package metadata
-rw-r--r--backend/decky_loader/helpers.py16
-rw-r--r--backend/decky_loader/updater.py4
-rw-r--r--backend/poetry.lock13
-rw-r--r--backend/pyproject.toml1
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"