summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarios8543 <marios8543@gmail.com>2023-10-17 23:51:57 +0300
committermarios8543 <marios8543@gmail.com>2023-10-31 23:17:57 +0200
commit949c5e73c496c3b467f7084ffffb466f98f906bc (patch)
tree2b1c43ae978b7494decbab54eef2bb6fb786c587
parentda9217ac4a73ba7588b046dcb16ed159a6fb23ac (diff)
downloaddecky-loader-949c5e73c496c3b467f7084ffffb466f98f906bc.tar.gz
decky-loader-949c5e73c496c3b467f7084ffffb466f98f906bc.zip
Add localplatform stuff to its own package
-rw-r--r--backend/src/browser.py2
-rw-r--r--backend/src/helpers.py2
-rw-r--r--backend/src/legacy/library.js84
-rw-r--r--backend/src/loader.py6
-rw-r--r--backend/src/localplatform/localplatform.py (renamed from backend/src/localplatform.py)0
-rw-r--r--backend/src/localplatform/localplatformlinux.py (renamed from backend/src/localplatformlinux.py)2
-rw-r--r--backend/src/localplatform/localplatformwin.py (renamed from backend/src/localplatformwin.py)0
-rw-r--r--backend/src/localplatform/localsocket.py (renamed from backend/src/localsocket.py)0
-rw-r--r--backend/src/main.py2
-rw-r--r--backend/src/settings.py2
-rw-r--r--backend/src/updater.py2
-rw-r--r--backend/src/utilities.py4
12 files changed, 11 insertions, 95 deletions
diff --git a/backend/src/browser.py b/backend/src/browser.py
index da8569be..7260db8e 100644
--- a/backend/src/browser.py
+++ b/backend/src/browser.py
@@ -17,7 +17,7 @@ from enum import IntEnum
from typing import Dict, List, TypedDict
# Local modules
-from .localplatform import chown, chmod
+from .localplatform.localplatform import chown, chmod
from .loader import Loader, Plugins
from .helpers import get_ssl_context, download_remote_binary_to_path
from .settings import SettingsManager
diff --git a/backend/src/helpers.py b/backend/src/helpers.py
index 0acfd929..e3770c63 100644
--- a/backend/src/helpers.py
+++ b/backend/src/helpers.py
@@ -10,7 +10,7 @@ import certifi
from aiohttp.web import Request, Response, middleware
from aiohttp.typedefs import Handler
from aiohttp import ClientSession
-from . import localplatform
+from .localplatform import localplatform
from .customtypes import UserType
from logging import getLogger
diff --git a/backend/src/legacy/library.js b/backend/src/legacy/library.js
deleted file mode 100644
index 17f4e46f..00000000
--- a/backend/src/legacy/library.js
+++ /dev/null
@@ -1,84 +0,0 @@
-class PluginEventTarget extends EventTarget { }
-method_call_ev_target = new PluginEventTarget();
-
-window.addEventListener("message", function(evt) {
- let ev = new Event(evt.data.call_id);
- ev.data = evt.data.result;
- method_call_ev_target.dispatchEvent(ev);
-}, false);
-
-async function call_server_method(method_name, arg_object={}) {
- const token = await fetch("http://127.0.0.1:1337/auth/token").then(r => r.text());
- const response = await fetch(`http://127.0.0.1:1337/methods/${method_name}`, {
- method: 'POST',
- credentials: "include",
- headers: {
- 'Content-Type': 'application/json',
- Authentication: token
- },
- body: JSON.stringify(arg_object),
- });
-
- const dta = await response.json();
- if (!dta.success) throw dta.result;
- return dta.result;
-}
-
-// Source: https://stackoverflow.com/a/2117523 Thanks!
-function uuidv4() {
- return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
- (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
- );
-}
-
-async function fetch_nocors(url, request={}) {
- let args = { method: "POST", headers: {}, body: "" };
- request = {...args, ...request};
- request.url = url;
- request.data = request.body;
- delete request.body; //maintain api-compatibility with fetch
- return await call_server_method("http_request", request);
-}
-
-async function call_plugin_method(method_name, arg_object={}) {
- if (plugin_name == undefined)
- throw new Error("Plugin methods can only be called from inside plugins (duh)");
- const token = await fetch("http://127.0.0.1:1337/auth/token").then(r => r.text());
- const response = await fetch(`http://127.0.0.1:1337/plugins/${plugin_name}/methods/${method_name}`, {
- method: 'POST',
- credentials: "include",
- headers: {
- 'Content-Type': 'application/json',
- Authentication: token
- },
- body: JSON.stringify({
- args: arg_object,
- }),
- });
-
- const dta = await response.json();
- if (!dta.success) throw dta.result;
- return dta.result;
-}
-
-async function execute_in_tab(tab, run_async, code) {
- return await call_server_method("execute_in_tab", {
- 'tab': tab,
- 'run_async': run_async,
- 'code': code
- });
-}
-
-async function inject_css_into_tab(tab, style) {
- return await call_server_method("inject_css_into_tab", {
- 'tab': tab,
- 'style': style
- });
-}
-
-async function remove_css_from_tab(tab, css_id) {
- return await call_server_method("remove_css_from_tab", {
- 'tab': tab,
- 'css_id': css_id
- });
-} \ No newline at end of file
diff --git a/backend/src/loader.py b/backend/src/loader.py
index f1ba662f..49f80c64 100644
--- a/backend/src/loader.py
+++ b/backend/src/loader.py
@@ -16,8 +16,8 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .main import PluginManager
-from .injector import get_tab, get_gamepadui_tab
-from .plugin import PluginWrapper
+from .injector import get_gamepadui_tab
+from .plugin.plugin import PluginWrapper
Plugins = dict[str, PluginWrapper]
ReloadQueue = Queue[Tuple[str, str, bool | None] | Tuple[str, str]]
@@ -143,7 +143,7 @@ class Loader:
self.plugins.pop(plugin.name, None)
if plugin.passive:
self.logger.info(f"Plugin {plugin.name} is passive")
- self.plugins[plugin.name] = plugin.start()
+ self.plugins[plugin.name] = plugin
self.logger.info(f"Loaded {plugin.name}")
if not batch:
self.loop.create_task(self.dispatch_plugin(plugin.name, plugin.version))
diff --git a/backend/src/localplatform.py b/backend/src/localplatform/localplatform.py
index 028eff8f..028eff8f 100644
--- a/backend/src/localplatform.py
+++ b/backend/src/localplatform/localplatform.py
diff --git a/backend/src/localplatformlinux.py b/backend/src/localplatform/localplatformlinux.py
index bde2caac..1ec3fc1a 100644
--- a/backend/src/localplatformlinux.py
+++ b/backend/src/localplatform/localplatformlinux.py
@@ -1,6 +1,6 @@
import os, pwd, grp, sys, logging
from subprocess import call, run, DEVNULL, PIPE, STDOUT
-from .customtypes import UserType
+from ..customtypes import UserType
logger = logging.getLogger("localplatform")
diff --git a/backend/src/localplatformwin.py b/backend/src/localplatform/localplatformwin.py
index 4c4e9439..4c4e9439 100644
--- a/backend/src/localplatformwin.py
+++ b/backend/src/localplatform/localplatformwin.py
diff --git a/backend/src/localsocket.py b/backend/src/localplatform/localsocket.py
index f38fe5e7..f38fe5e7 100644
--- a/backend/src/localsocket.py
+++ b/backend/src/localplatform/localsocket.py
diff --git a/backend/src/main.py b/backend/src/main.py
index b4623791..86c4720d 100644
--- a/backend/src/main.py
+++ b/backend/src/main.py
@@ -1,7 +1,7 @@
# Change PyInstaller files permissions
import sys
from typing import Dict
-from .localplatform import (chmod, chown, service_stop, service_start,
+from .localplatform.localplatform import (chmod, chown, service_stop, service_start,
ON_WINDOWS, get_log_level, get_live_reload,
get_server_port, get_server_host, get_chown_plugin_path,
get_privileged_path)
diff --git a/backend/src/settings.py b/backend/src/settings.py
index a9ab3daa..c0f2b90c 100644
--- a/backend/src/settings.py
+++ b/backend/src/settings.py
@@ -1,7 +1,7 @@
from json import dump, load
from os import mkdir, path, listdir, rename
from typing import Any, Dict
-from .localplatform import chown, folder_owner, get_chown_plugin_path
+from .localplatform.localplatform import chown, folder_owner, get_chown_plugin_path
from .customtypes import UserType
from .helpers import get_homebrew_path
diff --git a/backend/src/updater.py b/backend/src/updater.py
index d28e67b0..f8aef429 100644
--- a/backend/src/updater.py
+++ b/backend/src/updater.py
@@ -8,7 +8,7 @@ from os import getcwd, path, remove
from typing import TYPE_CHECKING, List, TypedDict
if TYPE_CHECKING:
from .main import PluginManager
-from .localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux
+from .localplatform.localplatform import chmod, service_restart, ON_LINUX, get_keep_systemd_service, get_selinux
from aiohttp import ClientSession, web
diff --git a/backend/src/utilities.py b/backend/src/utilities.py
index b0e23b88..f04ed371 100644
--- a/backend/src/utilities.py
+++ b/backend/src/utilities.py
@@ -18,9 +18,9 @@ from .browser import PluginInstallRequest, PluginInstallType
if TYPE_CHECKING:
from .main import PluginManager
from .injector import inject_to_tab, get_gamepadui_tab, close_old_tabs, get_tab
-from .localplatform import ON_WINDOWS
+from .localplatform.localplatform import ON_WINDOWS
from . import helpers
-from .localplatform import service_stop, service_start, get_home_path, get_username
+from .localplatform.localplatform import service_stop, service_start, get_home_path, get_username
class FilePickerObj(TypedDict):
file: Path