Moved main.py to serve.py, implemented modularization and added control module
This commit is contained in:
parent
ad6190b46a
commit
e185786959
6 changed files with 138 additions and 21 deletions
47
libcommon.py
47
libcommon.py
|
|
@ -1,9 +1,13 @@
|
|||
from typing import Callable, Dict, List, Optional, Tuple
|
||||
from subprocess import PIPE, STDOUT, Popen, run
|
||||
from typing import Callable, List, Optional, Tuple
|
||||
from importlib import import_module
|
||||
from typing import List, Tuple
|
||||
from pathlib import Path
|
||||
from sys import modules as _modules
|
||||
from re import Pattern
|
||||
|
||||
|
||||
minecraftOutputBinds: List[Tuple[Pattern, Callable]] = []
|
||||
minecraftOutputBinds: Dict[str, List[Tuple[Pattern, Callable]]] = {}
|
||||
minecraftProc = None
|
||||
|
||||
|
||||
|
|
@ -22,10 +26,47 @@ class Group:
|
|||
return f'<Group "{self.name}" at "{self.id}">'
|
||||
|
||||
|
||||
signalMessageBinds: List[Tuple[Optional[Group], Callable]] = []
|
||||
signalMessageBinds: Dict[str, List[Tuple[Optional[Group], Callable]]] = {}
|
||||
signalProc = None
|
||||
|
||||
|
||||
def signalInit(cmd: str) -> None:
|
||||
global signalProc
|
||||
signalProc = run(cmd.split(), stdout=PIPE)
|
||||
|
||||
|
||||
loadedMods = []
|
||||
|
||||
|
||||
def listModules() -> Tuple[List[str], List[str], List[str]]:
|
||||
modules = []
|
||||
loaded_modules = []
|
||||
unloaded_modules = []
|
||||
for file in Path("modules").iterdir():
|
||||
if file.name.endswith(".py"):
|
||||
modules.append(file.name[:-3])
|
||||
if file.name[:-3] in loadedMods:
|
||||
loaded_modules.append(file.name[:-3])
|
||||
else:
|
||||
unloaded_modules.append(file.name[:-3])
|
||||
return modules, loaded_modules, unloaded_modules
|
||||
|
||||
|
||||
def loadModule(module: str):
|
||||
global loadedMods
|
||||
|
||||
if module in listModules()[2]:
|
||||
minecraftOutputBinds[module] = []
|
||||
signalMessageBinds[module] = []
|
||||
import_module("modules."+module)
|
||||
loadedMods.append(module)
|
||||
|
||||
|
||||
def unloadModule(module: str):
|
||||
global loadedMods
|
||||
|
||||
if module in listModules()[1]:
|
||||
del _modules["modules."+module]
|
||||
loadedMods.remove(module)
|
||||
del minecraftOutputBinds[module]
|
||||
del signalMessageBinds[module]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue