Improved dynamic modules support
This commit is contained in:
		| @@ -1,7 +1,13 @@ | ||||
| from abc import ABC, abstractmethod | ||||
| from cpl_query.extension import List | ||||
|  | ||||
| from modules_core.events_enum import EventsEnum | ||||
|  | ||||
| class ModuleABC(ABC): | ||||
|  | ||||
|     @abstractmethod | ||||
|     def __init__(self): pass | ||||
|      | ||||
|     # @property | ||||
|     # @abstractmethod | ||||
|     # def events(self) -> List[EventsEnum]: pass | ||||
|   | ||||
| @@ -8,7 +8,4 @@ class ModuleServiceABC(ABC): | ||||
|     def __init__(self): pass | ||||
|  | ||||
|     @abstractmethod | ||||
|     def register(self): pass | ||||
|  | ||||
|     @abstractmethod | ||||
|     def start_modules(self): pass | ||||
|     async def start_modules(self): pass | ||||
|   | ||||
							
								
								
									
										6
									
								
								src/modules_core/events_enum.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/modules_core/events_enum.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| from enum import Enum | ||||
|  | ||||
|  | ||||
| class EventsEnum(Enum): | ||||
|  | ||||
|     on_ready = 'on_ready' | ||||
| @@ -1,7 +1,13 @@ | ||||
| from os import path | ||||
|  | ||||
| import discord | ||||
| from cpl_core.dependency_injection.service_provider_abc import \ | ||||
|     ServiceProviderABC | ||||
| from cpl_core.environment.application_environment_abc import \ | ||||
|     ApplicationEnvironmentABC | ||||
| from cpl_core.logging import LoggerABC | ||||
| from cpl_query.extension import List | ||||
| from discord.ext import commands | ||||
|  | ||||
| from modules_core.abc.module_abc import ModuleABC | ||||
| from modules_core.abc.module_service_abc import ModuleServiceABC | ||||
| @@ -9,13 +15,17 @@ from modules_core.abc.module_service_abc import ModuleServiceABC | ||||
|  | ||||
| class ModuleService(ModuleServiceABC): | ||||
|  | ||||
|     def __init__(self, logger: LoggerABC, env: ApplicationEnvironmentABC): | ||||
|     def __init__(self, logger: LoggerABC, services: ServiceProviderABC, env: ApplicationEnvironmentABC): | ||||
|         self._logger = logger | ||||
|         self._services = services | ||||
|         self._env = env | ||||
|         self._modules: List[ModuleABC] = List() | ||||
|         self._modules.extend(ModuleABC.__subclasses__()) | ||||
|  | ||||
|     def register(self, module: ModuleABC): | ||||
|         self._modules.append(module) | ||||
|  | ||||
|     def start_modules(self): | ||||
|         self._modules.for_each(lambda m: m.echo()) | ||||
|     async def start_modules(self): | ||||
|         self._logger.info(__name__, self._modules) | ||||
|         modules = self._modules.where(lambda m: hasattr(m, 'on_ready')) | ||||
|         self._logger.info(__name__, f'HIER: {modules}') | ||||
|         for module_type in modules: | ||||
|             module = self._services.get_service(module_type) | ||||
|             await module.on_ready() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user