refactor(backend): get version from package metadata

This commit is contained in:
K900
2023-11-14 10:21:49 +03:00
committed by AAGaming
parent 31a6202da9
commit 41c62c3a34
4 changed files with 27 additions and 7 deletions
+14 -2
View File
@@ -5,6 +5,7 @@ import os
import subprocess import subprocess
from hashlib import sha256 from hashlib import sha256
from io import BytesIO from io import BytesIO
import importlib.metadata
import certifi import certifi
from aiohttp.web import Request, Response, middleware from aiohttp.web import Request, Response, middleware
@@ -13,6 +14,7 @@ from aiohttp import ClientSession
from .localplatform import localplatform from .localplatform import localplatform
from .customtypes import UserType from .customtypes import UserType
from logging import getLogger from logging import getLogger
from packaging.version import Version
REMOTE_DEBUGGER_UNIT = "steam-web-debug-portforward.service" REMOTE_DEBUGGER_UNIT = "steam-web-debug-portforward.service"
@@ -49,8 +51,18 @@ def mkdir_as_user(path: str):
# Fetches the version of loader # Fetches the version of loader
def get_loader_version() -> str: def get_loader_version() -> str:
try: try:
with open(os.path.join(os.getcwd(), ".loader.version"), "r", encoding="utf-8") as version_file: # Normalize Python-style version to conform to Decky style
return version_file.readline().strip() 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: except Exception as e:
logger.warn(f"Failed to execute get_loader_version(): {str(e)}") logger.warn(f"Failed to execute get_loader_version(): {str(e)}")
return "unknown" return "unknown"
-4
View File
@@ -158,7 +158,6 @@ class Updater:
logger.error("Unable to update as remoteVer is missing") logger.error("Unable to update as remoteVer is missing")
return return
version = self.remoteVer["tag_name"]
download_url = None download_url = None
download_filename = "PluginLoader" if ON_LINUX else "PluginLoader.exe" download_filename = "PluginLoader" if ON_LINUX else "PluginLoader.exe"
download_temp_filename = download_filename + ".new" 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)) self.context.loop.create_task(tab.evaluate_js(f"window.DeckyUpdater.updateProgress({new_progress})", False, False, False))
progress = new_progress progress = new_progress
with open(path.join(getcwd(), ".loader.version"), "w", encoding="utf-8") as out:
out.write(version)
if ON_LINUX: if ON_LINUX:
remove(path.join(getcwd(), download_filename)) remove(path.join(getcwd(), download_filename))
shutil.move(path.join(getcwd(), download_temp_filename), path.join(getcwd(), download_filename)) shutil.move(path.join(getcwd(), download_temp_filename), path.join(getcwd(), download_filename))
+12 -1
View File
@@ -569,6 +569,17 @@ files = [
[package.dependencies] [package.dependencies]
setuptools = "*" 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]] [[package]]
name = "pefile" name = "pefile"
version = "2023.2.7" version = "2023.2.7"
@@ -799,4 +810,4 @@ multidict = ">=4.0"
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = ">=3.10,<3.13" python-versions = ">=3.10,<3.13"
content-hash = "acc0fcc8adcba521e2bb9f6eba2d3b047b1fe045d0019c0766ed7dc3fc804253" content-hash = "d41eda5e27d67b5d88cb3a71d2fcdf6c7170d92f6b5d0fb6ded455ae47319f5f"
+1
View File
@@ -19,6 +19,7 @@ aiohttp-jinja2 = "^1.5.1"
aiohttp-cors = "^0.7.0" aiohttp-cors = "^0.7.0"
watchdog = "^2.1.7" watchdog = "^2.1.7"
certifi = "*" certifi = "*"
packaging = "^23.2"
[tool.poetry.group.dev.dependencies] [tool.poetry.group.dev.dependencies]
pyinstaller = "^5.13.0" pyinstaller = "^5.13.0"