mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2025-08-17 16:25:36 +00:00
Relocate open() in plugins
This commit is contained in:
parent
64ce662d04
commit
a5202edf83
@ -63,26 +63,38 @@ class KuiToi:
|
|||||||
class PluginsLoader:
|
class PluginsLoader:
|
||||||
|
|
||||||
def __init__(self, plugins_dir):
|
def __init__(self, plugins_dir):
|
||||||
self.__plugins = {}
|
self.plugins = {}
|
||||||
self.__plugins_dir = plugins_dir
|
self.plugins_dir = plugins_dir
|
||||||
self.log = get_logger("PluginsLoader")
|
self.log = get_logger("PluginsLoader")
|
||||||
|
|
||||||
def load_plugins(self):
|
def load_plugins(self):
|
||||||
self.log.debug("Loading plugins...")
|
self.log.debug("Loading plugins...")
|
||||||
files = os.listdir(self.__plugins_dir)
|
files = os.listdir(self.plugins_dir)
|
||||||
for file in files:
|
for file in files:
|
||||||
if file.endswith(".py"):
|
if file.endswith(".py"):
|
||||||
try:
|
try:
|
||||||
self.log.debug(f"Loading plugin: {file}")
|
self.log.debug(f"Loading plugin: {file[:-3]}")
|
||||||
plugin = types.ModuleType('plugin')
|
plugin = types.ModuleType(file[:-3])
|
||||||
plugin.KuiToi = KuiToi
|
plugin.KuiToi = KuiToi
|
||||||
|
plugin.KuiToi._plugins_dir = self.plugins_dir
|
||||||
|
plugin.kt = None
|
||||||
plugin.print = print
|
plugin.print = print
|
||||||
file = os.path.join(self.__plugins_dir, file)
|
file_path = os.path.join(self.plugins_dir, file)
|
||||||
with open(f'{file}', 'r') as f:
|
plugin.__file__ = file_path
|
||||||
code = f.read().replace("import KuiToi\n", "")
|
with open(f'{file_path}', 'r') as f:
|
||||||
|
code = f.read()
|
||||||
exec(code, plugin.__dict__)
|
exec(code, plugin.__dict__)
|
||||||
|
if type(plugin.kt) != KuiToi:
|
||||||
|
raise AttributeError(f'Attribute "kt" isn\'t KuiToi class. Plugin file: "{file_path}"')
|
||||||
|
pl_name = plugin.kt.name
|
||||||
|
if self.plugins.get(pl_name) is not None:
|
||||||
|
raise NameError(f'Having plugins with identical names is not allowed; '
|
||||||
|
f'Plugin name: "{pl_name}"; Plugin file "{file_path}"')
|
||||||
|
plugin.open = plugin.kt.open
|
||||||
plugin.load()
|
plugin.load()
|
||||||
self.__plugins.update({file[:-3]: plugin})
|
self.plugins.update({pl_name: plugin})
|
||||||
self.log.debug(f"Plugin loaded: {file}")
|
self.log.debug(f"Plugin loaded: {file}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.error(f"Error loading plugin: {file}; Error: {e}")
|
# TODO: i18n
|
||||||
|
self.log.error(f"Error while loading plugin: {file}; Error: {e}")
|
||||||
|
self.log.exception(e)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user