meshtastic-matrix-relay/plugin_loader.py

37 wiersze
949 B
Python
Czysty Zwykły widok Historia

2023-04-28 00:40:19 +00:00
import os
2023-04-27 17:04:54 +00:00
import sys
import importlib
from pathlib import Path
2023-04-27 23:58:29 +00:00
from log_utils import get_logger
logger = get_logger(name="Plugins")
2023-04-27 17:04:54 +00:00
plugins = []
def load_plugins():
global plugins
if plugins:
return plugins
plugins = []
2023-05-14 01:04:10 +00:00
plugin_dirs = [Path("plugins")]
2023-04-27 23:58:29 +00:00
for plugin_folder in plugin_dirs:
sys.path.insert(0, str(plugin_folder.resolve()))
for plugin_file in plugin_folder.glob("*.py"):
plugin_name = plugin_file.stem
if plugin_name == "__init__":
continue
plugin_module = importlib.import_module(plugin_name)
if hasattr(plugin_module, "Plugin"):
plugin = plugin_module.Plugin()
if plugin.config["active"]:
2023-04-28 00:40:19 +00:00
logger.info(
2023-05-07 18:17:23 +00:00
f"Loaded {os.path.basename(plugin_folder)}/{plugin_name}"
2023-04-28 00:40:19 +00:00
)
2023-04-27 23:58:29 +00:00
plugins.append(plugin)
2023-04-27 17:04:54 +00:00
return plugins