summaryrefslogtreecommitdiff
path: root/backend/loader.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/loader.py')
-rw-r--r--backend/loader.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/backend/loader.py b/backend/loader.py
index 9c2b33f4..b4559180 100644
--- a/backend/loader.py
+++ b/backend/loader.py
@@ -25,8 +25,11 @@ class FileChangeHandler(RegexMatchingEventHandler):
self.logger = getLogger("file-watcher")
self.plugin_path = plugin_path
self.queue = queue
+ self.disabled = True
def maybe_reload(self, src_path):
+ if self.disabled:
+ return
plugin_dir = Path(path.relpath(src_path, self.plugin_path)).parts[0]
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))
@@ -66,13 +69,17 @@ class Loader:
self.plugin_path = plugin_path
self.logger.info(f"plugin_path: {self.plugin_path}")
self.plugins = {}
+ self.watcher = None
+ self.live_reload = live_reload
if live_reload:
self.reload_queue = Queue()
self.observer = Observer()
- self.observer.schedule(FileChangeHandler(self.reload_queue, plugin_path), self.plugin_path, recursive=True)
+ self.watcher = FileChangeHandler(self.reload_queue, plugin_path)
+ self.observer.schedule(self.watcher, self.plugin_path, recursive=True)
self.observer.start()
self.loop.create_task(self.handle_reloads())
+ self.loop.create_task(self.enable_reload_wait())
server_instance.add_routes([
web.get("/frontend/{path:.*}", self.handle_frontend_assets),
@@ -87,6 +94,12 @@ class Loader:
web.get("/steam_resource/{path:.+}", self.get_steam_resource)
])
+ async def enable_reload_wait(self):
+ if self.live_reload:
+ await sleep(10)
+ self.logger.info("Hot reload enabled")
+ self.watcher.disabled = False
+
async def handle_frontend_assets(self, request):
file = path.join(path.dirname(__file__), "static", request.match_info["path"])