From 64ce662d04a95bb82c049024f665366586b29e5e Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Sat, 15 Jul 2023 02:15:11 +0300 Subject: [PATCH] Add methods in KuiToi class --- src/modules/PluginsLoader/plugins_loader.py | 46 ++++++++++++++++++--- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/modules/PluginsLoader/plugins_loader.py b/src/modules/PluginsLoader/plugins_loader.py index a32fd00..18e4756 100644 --- a/src/modules/PluginsLoader/plugins_loader.py +++ b/src/modules/PluginsLoader/plugins_loader.py @@ -1,19 +1,55 @@ import os import types +from contextlib import contextmanager from core import get_logger +# TODO: call_client_event, get_player, get_players, GetPlayerCount class KuiToi: + _plugins_dir = "" def __init__(self, name=None): if name is None: - raise Exception("BeamMP: Name is required") - self.log = get_logger(f"PluginsLoader | {name}") - self.name = name + raise AttributeError("KuiToi: Name is required") + self.log = get_logger(f"Plugin | {name}") + self.__name = name + self.__dir = os.path.join(self._plugins_dir, self.__name) + if not os.path.exists(self.__dir): + os.mkdir(self.__dir) - def set_name(self, name): - self.name = name + @property + def name(self): + return self.__name + + @name.setter + def name(self, value): + # You chell not pass + pass + + @property + def dir(self): + return self.__dir + + @dir.setter + def dir(self, value): + # You chell not pass + pass + + @contextmanager + def open(self, file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None): + path = os.path.join(self.__dir, file) + if not os.path.exists(path): + with open(path, 'x'): ... + f = None + try: + f = open(path, mode, buffering, encoding, errors, newline, closefd, opener) + yield f + except Exception as e: + raise e + finally: + if f is not None: + f.close() @staticmethod def register_event(event_name, event_func):