Improved dynamic modules support
This commit is contained in:
@@ -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