mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-06-17 08:47:49 +00:00
Fix most formatting and linting errors
This commit is contained in:
+81
-26
@@ -16,6 +16,7 @@ from settings import SettingsManager
|
||||
|
||||
logger = getLogger("Updater")
|
||||
|
||||
|
||||
class Updater:
|
||||
def __init__(self, context) -> None:
|
||||
self.context = context
|
||||
@@ -26,7 +27,7 @@ class Updater:
|
||||
"get_version": self.get_version,
|
||||
"do_update": self.do_update,
|
||||
"do_restart": self.do_restart,
|
||||
"check_for_updates": self.check_for_updates
|
||||
"check_for_updates": self.check_for_updates,
|
||||
}
|
||||
self.remoteVer = None
|
||||
self.allRemoteVers = None
|
||||
@@ -39,12 +40,14 @@ class Updater:
|
||||
self.currentBranch = self.get_branch(self.context.settings)
|
||||
except:
|
||||
self.currentBranch = 0
|
||||
logger.error("Current branch could not be determined, defaulting to \"Stable\"")
|
||||
logger.error(
|
||||
'Current branch could not be determined, defaulting to "Stable"'
|
||||
)
|
||||
|
||||
if context:
|
||||
context.web_app.add_routes([
|
||||
web.post("/updater/{method_name}", self._handle_server_method_call)
|
||||
])
|
||||
context.web_app.add_routes(
|
||||
[web.post("/updater/{method_name}", self._handle_server_method_call)]
|
||||
)
|
||||
context.loop.create_task(self.version_reloader())
|
||||
|
||||
async def _handle_server_method_call(self, request):
|
||||
@@ -89,7 +92,10 @@ class Updater:
|
||||
case 1 | 2:
|
||||
url = "https://raw.githubusercontent.com/SteamDeckHomebrew/decky-loader/main/dist/plugin_loader-prerelease.service"
|
||||
case _:
|
||||
logger.error("You have an invalid branch set... Defaulting to prerelease service, please send the logs to the devs!")
|
||||
logger.error(
|
||||
"You have an invalid branch set... Defaulting to prerelease"
|
||||
" service, please send the logs to the devs!"
|
||||
)
|
||||
url = "https://raw.githubusercontent.com/SteamDeckHomebrew/decky-loader/main/dist/plugin_loader-prerelease.service"
|
||||
return str(url)
|
||||
|
||||
@@ -99,31 +105,58 @@ class Updater:
|
||||
"current": self.localVer,
|
||||
"remote": self.remoteVer,
|
||||
"all": self.allRemoteVers,
|
||||
"updatable": self.localVer != None
|
||||
"updatable": self.localVer != None,
|
||||
}
|
||||
else:
|
||||
return {"current": "unknown", "remote": self.remoteVer, "all": self.allRemoteVers, "updatable": False}
|
||||
return {
|
||||
"current": "unknown",
|
||||
"remote": self.remoteVer,
|
||||
"all": self.allRemoteVers,
|
||||
"updatable": False,
|
||||
}
|
||||
|
||||
async def check_for_updates(self):
|
||||
logger.debug("checking for updates")
|
||||
selectedBranch = self.get_branch(self.context.settings)
|
||||
async with ClientSession() as web:
|
||||
async with web.request("GET", "https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases", ssl=helpers.get_ssl_context()) as res:
|
||||
async with web.request(
|
||||
"GET",
|
||||
"https://api.github.com/repos/SteamDeckHomebrew/decky-loader/releases",
|
||||
ssl=helpers.get_ssl_context(),
|
||||
) as res:
|
||||
remoteVersions = await res.json()
|
||||
self.allRemoteVers = remoteVersions
|
||||
logger.debug("determining release type to find, branch is %i" % selectedBranch)
|
||||
if selectedBranch == 0:
|
||||
logger.debug("release type: release")
|
||||
self.remoteVer = next(filter(lambda ver: ver["tag_name"].startswith("v") and not ver["prerelease"] and ver["tag_name"], remoteVersions), None)
|
||||
self.remoteVer = next(
|
||||
filter(
|
||||
lambda ver: ver["tag_name"].startswith("v")
|
||||
and not ver["prerelease"]
|
||||
and ver["tag_name"],
|
||||
remoteVersions,
|
||||
),
|
||||
None,
|
||||
)
|
||||
elif selectedBranch == 1:
|
||||
logger.debug("release type: pre-release")
|
||||
self.remoteVer = next(filter(lambda ver: ver["prerelease"] and ver["tag_name"].startswith("v") and ver["tag_name"].find("-pre"), remoteVersions), None)
|
||||
self.remoteVer = next(
|
||||
filter(
|
||||
lambda ver: ver["prerelease"]
|
||||
and ver["tag_name"].startswith("v")
|
||||
and ver["tag_name"].find("-pre"),
|
||||
remoteVersions,
|
||||
),
|
||||
None,
|
||||
)
|
||||
else:
|
||||
logger.error("release type: NOT FOUND")
|
||||
raise ValueError("no valid branch found")
|
||||
logger.info("Updated remote version information")
|
||||
tab = await get_gamepadui_tab()
|
||||
await tab.evaluate_js(f"window.DeckyPluginLoader.notifyUpdates()", False, True, False)
|
||||
await tab.evaluate_js(
|
||||
f"window.DeckyPluginLoader.notifyUpdates()", False, True, False
|
||||
)
|
||||
return await self.get_version()
|
||||
|
||||
async def version_reloader(self):
|
||||
@@ -133,7 +166,7 @@ class Updater:
|
||||
await self.check_for_updates()
|
||||
except:
|
||||
pass
|
||||
await sleep(60 * 60 * 6) # 6 hours
|
||||
await sleep(60 * 60 * 6) # 6 hours
|
||||
|
||||
async def do_update(self):
|
||||
logger.debug("Starting update.")
|
||||
@@ -147,7 +180,9 @@ class Updater:
|
||||
async with ClientSession() as web:
|
||||
logger.debug("Downloading systemd service")
|
||||
# download the relevant systemd service depending upon branch
|
||||
async with web.request("GET", service_url, ssl=helpers.get_ssl_context(), allow_redirects=True) as res:
|
||||
async with web.request(
|
||||
"GET", service_url, ssl=helpers.get_ssl_context(), allow_redirects=True
|
||||
) as res:
|
||||
logger.debug("Downloading service file")
|
||||
data = await res.content.read()
|
||||
logger.debug(str(data))
|
||||
@@ -157,22 +192,33 @@ class Updater:
|
||||
out.write(data)
|
||||
except Exception as e:
|
||||
logger.error(f"Error at %s", exc_info=e)
|
||||
with open(path.join(getcwd(), "plugin_loader.service"), "r", encoding="utf-8") as service_file:
|
||||
with open(
|
||||
path.join(getcwd(), "plugin_loader.service"), "r", encoding="utf-8"
|
||||
) as service_file:
|
||||
service_data = service_file.read()
|
||||
service_data = service_data.replace("${HOMEBREW_FOLDER}", helpers.get_homebrew_path())
|
||||
with open(path.join(getcwd(), "plugin_loader.service"), "w", encoding="utf-8") as service_file:
|
||||
service_file.write(service_data)
|
||||
|
||||
service_data = service_data.replace(
|
||||
"${HOMEBREW_FOLDER}", helpers.get_homebrew_path()
|
||||
)
|
||||
with open(
|
||||
path.join(getcwd(), "plugin_loader.service"), "w", encoding="utf-8"
|
||||
) as service_file:
|
||||
service_file.write(service_data)
|
||||
|
||||
logger.debug("Saved service file")
|
||||
logger.debug("Copying service file over current file.")
|
||||
shutil.copy(service_file_path, "/etc/systemd/system/plugin_loader.service")
|
||||
if not os.path.exists(path.join(getcwd(), ".systemd")):
|
||||
os.mkdir(path.join(getcwd(), ".systemd"))
|
||||
shutil.move(service_file_path, path.join(getcwd(), ".systemd")+"/plugin_loader.service")
|
||||
|
||||
shutil.move(
|
||||
service_file_path,
|
||||
path.join(getcwd(), ".systemd") + "/plugin_loader.service",
|
||||
)
|
||||
|
||||
logger.debug("Downloading binary")
|
||||
async with web.request("GET", download_url, ssl=helpers.get_ssl_context(), allow_redirects=True) as res:
|
||||
total = int(res.headers.get('content-length', 0))
|
||||
async with web.request(
|
||||
"GET", download_url, ssl=helpers.get_ssl_context(), allow_redirects=True
|
||||
) as res:
|
||||
total = int(res.headers.get("content-length", 0))
|
||||
# we need to not delete the binary until we have downloaded the new binary!
|
||||
try:
|
||||
remove(path.join(getcwd(), "PluginLoader"))
|
||||
@@ -186,13 +232,22 @@ class Updater:
|
||||
raw += len(c)
|
||||
new_progress = round((raw / total) * 100)
|
||||
if progress != new_progress:
|
||||
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
|
||||
|
||||
with open(path.join(getcwd(), ".loader.version"), "w", encoding="utf-8") as out:
|
||||
with open(
|
||||
path.join(getcwd(), ".loader.version"), "w", encoding="utf-8"
|
||||
) as out:
|
||||
out.write(version)
|
||||
|
||||
call(['chmod', '+x', path.join(getcwd(), "PluginLoader")])
|
||||
call(["chmod", "+x", path.join(getcwd(), "PluginLoader")])
|
||||
logger.info("Updated loader installation.")
|
||||
await tab.evaluate_js("window.DeckyUpdater.finish()", False, False)
|
||||
await self.do_restart()
|
||||
|
||||
Reference in New Issue
Block a user