mirror of
https://github.com/kuitoi/kuitoi-Server.git
synced 2026-10-26 22:20:45 +00:00
[~] console.del_command
[!] FIX plugins load | reload
This commit is contained in:
1 parent
7796e3970d
commit
243177ee6f
4 files changed
+35
-8
No files matched your search
@@ -10,7 +10,7 @@ __title__ = 'KuiToi-Server'
|
|||||||
__description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.'
|
__description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.'
|
||||||
__url__ = 'https://github.com/kuitoi/kuitoi-Server'
|
__url__ = 'https://github.com/kuitoi/kuitoi-Server'
|
||||||
__version__ = '0.4.8 (pre)'
|
__version__ = '0.4.8 (pre)'
|
||||||
__build__ = 2511 # Я это считаю лог файлами
|
__build__ = 2542 # Я это считаю лог файлами
|
||||||
__author__ = 'SantaSpeen'
|
__author__ = 'SantaSpeen'
|
||||||
__author_email__ = 'admin@kuitoi.su'
|
__author_email__ = 'admin@kuitoi.su'
|
||||||
__license__ = "FPA"
|
__license__ = "FPA"
|
||||||
|
|||||||
@@ -177,8 +177,10 @@ class TCPServer:
|
|||||||
raise e
|
raise e
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
pass
|
pass
|
||||||
|
except ConnectionResetError as e:
|
||||||
|
self.log.debug(f"ConnectionResetError {e}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.error(f"Error: {e}")
|
self.log.exception(e)
|
||||||
raise e
|
raise e
|
||||||
finally:
|
finally:
|
||||||
self.run = False
|
self.run = False
|
||||||
|
|||||||
@@ -15,10 +15,12 @@ from prompt_toolkit import PromptSession, print_formatted_text, HTML
|
|||||||
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
|
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
|
||||||
from prompt_toolkit.completion import NestedCompleter
|
from prompt_toolkit.completion import NestedCompleter
|
||||||
from prompt_toolkit.history import FileHistory
|
from prompt_toolkit.history import FileHistory
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from prompt_toolkit.output.win32 import NoConsoleScreenBufferError
|
from prompt_toolkit.output.win32 import NoConsoleScreenBufferError
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
class NoConsoleScreenBufferError(Exception): ...
|
class NoConsoleScreenBufferError(Exception):
|
||||||
|
...
|
||||||
from prompt_toolkit.patch_stdout import patch_stdout
|
from prompt_toolkit.patch_stdout import patch_stdout
|
||||||
|
|
||||||
from core import get_logger
|
from core import get_logger
|
||||||
@@ -123,6 +125,22 @@ class Console:
|
|||||||
def __update_completer(self):
|
def __update_completer(self):
|
||||||
self.completer = NestedCompleter.from_nested_dict(self.__alias)
|
self.completer = NestedCompleter.from_nested_dict(self.__alias)
|
||||||
|
|
||||||
|
def del_command(self, func):
|
||||||
|
self.__debug(f"delete command: func={func};")
|
||||||
|
keys = []
|
||||||
|
for k, v in self.__func.items():
|
||||||
|
if v['f'] is func:
|
||||||
|
keys.append(k)
|
||||||
|
for key in keys:
|
||||||
|
self.__debug(f"Delete: key={key}")
|
||||||
|
self.__alias.pop(key)
|
||||||
|
self.__alias["man"].pop(key)
|
||||||
|
self.__func.pop(key)
|
||||||
|
self.__man.pop(key)
|
||||||
|
self.__desc.pop(key)
|
||||||
|
self.__debug("Deleted.")
|
||||||
|
self.__update_completer()
|
||||||
|
|
||||||
def add_command(self, key: str, func, man: str = None, desc: str = None, custom_completer: dict = None) -> dict:
|
def add_command(self, key: str, func, man: str = None, desc: str = None, custom_completer: dict = None) -> dict:
|
||||||
key = key.format(" ", "-")
|
key = key.format(" ", "-")
|
||||||
|
|
||||||
@@ -258,6 +276,8 @@ class Console:
|
|||||||
self.log(self.__not_found % cmd)
|
self.log(self.__not_found % cmd)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise KeyboardInterrupt
|
raise KeyboardInterrupt
|
||||||
|
except ConnectionResetError as e:
|
||||||
|
self.__debug(f"ConnectionResetError {e}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error in console.py: {e}")
|
print(f"Error in console.py: {e}")
|
||||||
self.__logger.exception(e)
|
self.__logger.exception(e)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ class KuiToi:
|
|||||||
self.__name = name
|
self.__name = name
|
||||||
self.__dir = Path(self._plugins_dir) / self.__name
|
self.__dir = Path(self._plugins_dir) / self.__name
|
||||||
os.makedirs(self.__dir, exist_ok=True)
|
os.makedirs(self.__dir, exist_ok=True)
|
||||||
self.__events_funcs = []
|
self.__funcs = []
|
||||||
self.register_event = self.register
|
self.register_event = self.register
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -67,11 +67,12 @@ class KuiToi:
|
|||||||
|
|
||||||
def register(self, event_name, event_func):
|
def register(self, event_name, event_func):
|
||||||
self.log.debug(f"Registering event {event_name}")
|
self.log.debug(f"Registering event {event_name}")
|
||||||
self.__events_funcs.append(event_func)
|
self.__funcs.append(event_func)
|
||||||
ev.register(event_name, event_func)
|
ev.register(event_name, event_func)
|
||||||
|
|
||||||
def _unload(self):
|
def _unload(self):
|
||||||
for f in self.__events_funcs:
|
for f in self.__funcs:
|
||||||
|
console.del_command(f)
|
||||||
ev.unregister(f)
|
ev.unregister(f)
|
||||||
|
|
||||||
def call_event(self, event_name, *args, **kwargs):
|
def call_event(self, event_name, *args, **kwargs):
|
||||||
@@ -106,6 +107,7 @@ class KuiToi:
|
|||||||
|
|
||||||
def add_command(self, key, func, man, desc, custom_completer) -> dict:
|
def add_command(self, key, func, man, desc, custom_completer) -> dict:
|
||||||
self.log.debug("Requests add_command")
|
self.log.debug("Requests add_command")
|
||||||
|
self.__funcs.append(func)
|
||||||
return console.add_command(key, func, man, desc, custom_completer)
|
return console.add_command(key, func, man, desc, custom_completer)
|
||||||
|
|
||||||
|
|
||||||
@@ -139,12 +141,15 @@ class PluginsLoader:
|
|||||||
ok, _, file, _ = await self._unload_by_name(x[1], True)
|
ok, _, file, _ = await self._unload_by_name(x[1], True)
|
||||||
if ok:
|
if ok:
|
||||||
if await self._load_by_file(file):
|
if await self._load_by_file(file):
|
||||||
|
self.plugins[x[1]]['plugin'].start()
|
||||||
return f"Plugin reloaded ({time.monotonic() - t1:.1f}sec)"
|
return f"Plugin reloaded ({time.monotonic() - t1:.1f}sec)"
|
||||||
return "Plugin not found"
|
return "Plugin not found"
|
||||||
return usage
|
return usage
|
||||||
case 'load':
|
case 'load':
|
||||||
if len(x) == 2:
|
if len(x) == 2:
|
||||||
if await self._load_by_file(x[1]):
|
name = await self._load_by_file(x[1])
|
||||||
|
if name:
|
||||||
|
self.plugins[name]['plugin'].start()
|
||||||
return "Plugin loaded"
|
return "Plugin loaded"
|
||||||
return usage
|
return usage
|
||||||
case 'unload':
|
case 'unload':
|
||||||
@@ -241,7 +246,7 @@ class PluginsLoader:
|
|||||||
th.join()
|
th.join()
|
||||||
self.loaded.append((pl_name, True))
|
self.loaded.append((pl_name, True))
|
||||||
self.log.debug(f"Plugin loaded: {file}. Settings: {self.plugins[pl_name]}")
|
self.log.debug(f"Plugin loaded: {file}. Settings: {self.plugins[pl_name]}")
|
||||||
return True
|
return pl_name
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.loaded.append((file, False))
|
self.loaded.append((file, False))
|
||||||
self.log.error(i18n.plugins_error_loading.format(file, f"{e}"))
|
self.log.error(i18n.plugins_error_loading.format(file, f"{e}"))
|
||||||
|
|||||||
Reference in new issue
Block a user