summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorJonas Dellinger <jonas@dellinger.dev>2022-05-26 09:29:49 +0200
committerJonas Dellinger <jonas@dellinger.dev>2022-05-26 09:29:49 +0200
commit39e56fed3de9129ff167a632ffbc12340fe665e9 (patch)
tree5014c945521b30a462fcd22af9ca86deb5da9315 /backend
parentd23f1ac56c6749e214303c01adec20f2d4a2d0dd (diff)
downloaddecky-loader-39e56fed3de9129ff167a632ffbc12340fe665e9.tar.gz
decky-loader-39e56fed3de9129ff167a632ffbc12340fe665e9.zip
Switch to inotify, RegexMatchingEventHandler and use set for reloading plugins
Diffstat (limited to 'backend')
-rw-r--r--backend/loader.py9
1 files changed, 4 insertions, 5 deletions
diff --git a/backend/loader.py b/backend/loader.py
index 9357b4ce..4880790a 100644
--- a/backend/loader.py
+++ b/backend/loader.py
@@ -8,23 +8,22 @@ from traceback import print_exc
from aiohttp import web
from aiohttp_jinja2 import template
from genericpath import exists
-from watchdog.events import FileSystemEventHandler
-from watchdog.observers.polling import PollingObserver as Observer
+from watchdog.events import RegexMatchingEventHandler
+from watchdog.observers.inotify import InotifyObserver as Observer
from injector import inject_to_tab
from plugin import PluginWrapper
-class FileChangeHandler(FileSystemEventHandler):
+class FileChangeHandler(RegexMatchingEventHandler):
def __init__(self, queue, plugin_path) -> None:
- super().__init__()
+ super().__init__(regexes=[r'^.*?dist\/index\.js$', r'^.*?main\.py$'])
self.logger = getLogger("file-watcher")
self.plugin_path = plugin_path
self.queue = queue
def maybe_reload(self, src_path):
plugin_dir = Path(path.relpath(src_path, self.plugin_path)).parts[0]
- self.logger.info(path.join(self.plugin_path, plugin_dir, "plugin.json"))
if exists(path.join(self.plugin_path, plugin_dir, "plugin.json")):
self.queue.put_nowait((path.join(self.plugin_path, plugin_dir, "main.py"), plugin_dir, True))