Is this LUAAAAA? No...

This commit is contained in:
2023-07-20 05:21:00 +03:00
parent 744a7347a3
commit 752e981462
5 changed files with 60 additions and 8 deletions

View File

@@ -1 +1,2 @@
from .plugins_loader import PluginsLoader
from .lua_plugins_loader import LuaPluginsLoader

View File

@@ -0,0 +1,45 @@
import asyncio
import os
from core import get_logger
class MP:
def __init__(self):
pass
class LuaPluginsLoader:
def __init__(self, plugins_dir):
self.loop = asyncio.get_event_loop()
self.lua_plugins = {}
self.lua_plugins_tasks = []
self.plugins_dir = plugins_dir
self.lua_dirs = []
self.log = get_logger("LuaPluginsLoader")
self.loaded_str = "Lua plugins: "
ev.register_event("_lua_plugins_start", self.start)
ev.register_event("_lua_plugins_unload", self.unload)
console.add_command("lua_plugins", lambda x: self.loaded_str[:-2])
console.add_command("lua_pl", lambda x: self.loaded_str[:-2])
async def load(self):
self.log.debug("Loading Lua plugins...")
py_folders = ev.call_event("_plugins_get")[0]
folders = []
for obj in os.listdir(self.plugins_dir):
path = os.path.join(self.plugins_dir, obj)
if os.path.isdir(path) and obj not in py_folders and obj not in "__pycache__":
if os.path.isfile(os.path.join(path, "main.lua")):
folders.append(path)
self.log.debug(f"py_folders {py_folders}, folders {folders}")
# for dirpath, dirnames, filenames in os.walk(f"/{self.plugins_dir}/{plugin_dir}"):
# if "main.lua" in filenames:
# return os.path.join(dirpath, "main.lua")
async def start(self, _): ...
async def unload(self, _): ...

View File

@@ -73,7 +73,7 @@ class PluginsLoader:
self.loaded_str = "Plugins: "
ev.register_event("_plugins_start", self.start)
ev.register_event("_plugins_unload", self.unload)
ev.register_event("_plugins_get", lambda x: self.plugins)
ev.register_event("_plugins_get", lambda x: list(self.plugins.keys()))
console.add_command("plugins", lambda x: self.loaded_str[:-2])
console.add_command("pl", lambda x: self.loaded_str[:-2])
@@ -81,14 +81,14 @@ class PluginsLoader:
self.log.debug("Loading plugins...")
files = os.listdir(self.plugins_dir)
for file in files:
if os.path.isfile(file) and file.endswith(".py"):
file_path = os.path.join(self.plugins_dir, file)
if os.path.isfile(file_path) and file.endswith(".py"):
try:
self.log.debug(f"Loading plugin: {file[:-3]}")
plugin = types.ModuleType(file[:-3])
plugin.KuiToi = KuiToi
plugin.KuiToi._plugins_dir = self.plugins_dir
plugin.print = print
file_path = os.path.join(self.plugins_dir, file)
plugin.__file__ = file_path
with open(f'{file_path}', 'r', encoding=config.enc) as f:
code = f.read()

View File

@@ -11,5 +11,6 @@ from .ConfigProvider import ConfigProvider, Config
from .i18n import MultiLanguage
from .EventsSystem import EventsSystem
from .PluginsLoader import PluginsLoader
from .PluginsLoader import LuaPluginsLoader
from .WebAPISystem import web_app
from .WebAPISystem import _stop as stop_web