summaryrefslogtreecommitdiff
path: root/backend/browser.py
diff options
context:
space:
mode:
authorgeeksville <kevinh@geeksville.com>2023-03-05 14:30:26 -0800
committerGitHub <noreply@github.com>2023-03-05 14:30:26 -0800
commit3e5404abdd870d0640f6528ef52e8d75437fe881 (patch)
tree4bf2b0c97cd91d3397b2473452eafa9686ba4ff5 /backend/browser.py
parent46abc5a2666a7b3006a12d87bf56a7a12c300732 (diff)
downloaddecky-loader-3e5404abdd870d0640f6528ef52e8d75437fe881.tar.gz
decky-loader-3e5404abdd870d0640f6528ef52e8d75437fe881.zip
fix #390 the plugin_directory argument to import_plugin was incorrect (#391)v2.6.3-pre2
Diffstat (limited to 'backend/browser.py')
-rw-r--r--backend/browser.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/backend/browser.py b/backend/browser.py
index dbdf2d5f..c15e1ada 100644
--- a/backend/browser.py
+++ b/backend/browser.py
@@ -42,7 +42,7 @@ class PluginBrowser:
return False
zip_file = ZipFile(zip)
zip_file.extractall(self.plugin_path)
- plugin_dir = self.find_plugin_folder(name)
+ plugin_dir = path.join(self.plugin_path, self.find_plugin_folder(name))
code_chown = call(["chown", "-R", get_user()+":"+get_user_group(), plugin_dir])
code_chmod = call(["chmod", "-R", "555", plugin_dir])
if code_chown != 0 or code_chmod != 0:
@@ -92,6 +92,7 @@ class PluginBrowser:
return rv
+ """Return the filename (only) for the specified plugin"""
def find_plugin_folder(self, name):
for folder in listdir(self.plugin_path):
try:
@@ -99,7 +100,7 @@ class PluginBrowser:
plugin = json.load(f)
if plugin['name'] == name:
- return str(path.join(self.plugin_path, folder))
+ return folder
except:
logger.debug(f"skipping {folder}")
@@ -107,9 +108,10 @@ class PluginBrowser:
if self.loader.watcher:
self.loader.watcher.disabled = True
tab = await get_gamepadui_tab()
+ plugin_dir = path.join(self.plugin_path, self.find_plugin_folder(name))
try:
logger.info("uninstalling " + name)
- logger.info(" at dir " + self.find_plugin_folder(name))
+ logger.info(" at dir " + plugin_dir)
logger.debug("calling frontend unload for %s" % str(name))
res = await tab.evaluate_js(f"DeckyPluginLoader.unloadPlugin('{name}')")
logger.debug("result of unload from UI: %s", res)
@@ -123,11 +125,11 @@ class PluginBrowser:
del self.plugins[name]
logger.debug("Plugin %s was removed from the dictionary", name)
logger.debug("removing files %s" % str(name))
- rmtree(self.find_plugin_folder(name))
+ rmtree(plugin_dir)
except FileNotFoundError:
logger.warning(f"Plugin {name} not installed, skipping uninstallation")
except Exception as e:
- logger.error(f"Plugin {name} in {self.find_plugin_folder(name)} was not uninstalled")
+ logger.error(f"Plugin {name} in {plugin_dir} was not uninstalled")
logger.error(f"Error at %s", exc_info=e)
if self.loader.watcher:
self.loader.watcher.disabled = False
@@ -160,7 +162,8 @@ class PluginBrowser:
logger.debug("Unzipping...")
ret = self._unzip_to_plugin_dir(res_zip, name, hash)
if ret:
- plugin_dir = self.find_plugin_folder(name)
+ plugin_folder = self.find_plugin_folder(name)
+ plugin_dir = path.join(self.plugin_path, plugin_folder)
ret = await self._download_remote_binaries_for_plugin_with_name(plugin_dir)
if ret:
logger.info(f"Installed {name} (Version: {version})")
@@ -168,7 +171,7 @@ class PluginBrowser:
self.loader.plugins[name].stop()
self.loader.plugins.pop(name, None)
await sleep(1)
- self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_dir)
+ self.loader.import_plugin(path.join(plugin_dir, "main.py"), plugin_folder)
else:
logger.fatal(f"Failed Downloading Remote Binaries")
else: