import os from datetime import datetime from typing import Optional from cpl_core.application import StartupABC from cpl_core.configuration import ConfigurationABC from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC from cpl_core.environment import ApplicationEnvironment from cpl_discord import get_discord_collection class Startup(StartupABC): def __init__(self): StartupABC.__init__(self) self._start_time = datetime.now() self._config: Optional[ConfigurationABC] = None def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: environment.set_working_directory(os.path.dirname(os.path.realpath(__file__))) configuration.add_environment_variables('KDB_') configuration.add_environment_variables('DISCORD_') configuration.add_json_file(f'config/appsettings.json', optional=False) configuration.add_json_file(f'config/appsettings.{environment.environment_name}.json', optional=True) configuration.add_json_file(f'config/appsettings.{environment.host_name}.json', optional=True) configuration.add_configuration('Startup_StartTime', str(self._start_time)) self._config = configuration return configuration def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: services.add_logging() services.add_translation() services.add_discord() discord_collection = get_discord_collection(services) return services.build_service_provider()