Updated config & environment

This commit is contained in:
2025-09-16 08:39:00 +02:00
parent 5edabbf8c1
commit 5f25400bcd
134 changed files with 366 additions and 2233 deletions

View File

@@ -1,7 +1,7 @@
from cpl.core.application.async_startup_abc import AsyncStartupABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.dependency_injection import ServiceProviderABC, ServiceCollectionABC
from cpl.core.environment import ApplicationEnvironment
from cpl.core.environment import Environment
class Startup(AsyncStartupABC):
@@ -9,11 +9,11 @@ class Startup(AsyncStartupABC):
AsyncStartupABC.__init__(self)
async def configure_configuration(
self, configuration: ConfigurationABC, environment: ApplicationEnvironment
self, configuration: ConfigurationABC, environment: Environment
) -> ConfigurationABC:
return configuration
async def configure_services(
self, services: ServiceCollectionABC, environment: ApplicationEnvironment
self, services: ServiceCollectionABC, environment: Environment
) -> ServiceProviderABC:
return services.build_service_provider()

View File

@@ -2,7 +2,7 @@ from cpl.core.application import StartupABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.database import DatabaseSettings
from cpl.core.dependency_injection import ServiceCollectionABC, ServiceProviderABC
from cpl.core.environment import ApplicationEnvironmentABC
from cpl.core.environment import EnvironmentABC
from cpl.core.log import Logger, LoggerABC
from model.db_context import DBContext
@@ -17,7 +17,7 @@ class Startup(StartupABC):
self._configuration = None
def configure_configuration(
self, configuration: ConfigurationABC, environment: ApplicationEnvironmentABC
self, configuration: ConfigurationABC, environment: EnvironmentABC
) -> ConfigurationABC:
configuration.add_environment_variables("PYTHON_")
configuration.add_environment_variables("CPL_")
@@ -30,7 +30,7 @@ class Startup(StartupABC):
return configuration
def configure_services(
self, services: ServiceCollectionABC, environment: ApplicationEnvironmentABC
self, services: ServiceCollectionABC, environment: EnvironmentABC
) -> ServiceProviderABC:
# Create and connect to database
self._configuration.parse_console_arguments(services)

View File

@@ -1,7 +1,7 @@
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.core.environment import Environment
from di.test1_service import Test1Service
from di.test2_service import Test2Service
from di.test_abc import TestABC
@@ -15,12 +15,12 @@ class Startup(StartupABC):
StartupABC.__init__(self)
def configure_configuration(
self, configuration: ConfigurationABC, environment: ApplicationEnvironment
self, configuration: ConfigurationABC, environment: Environment
) -> ConfigurationABC:
return configuration
def configure_services(
self, services: ServiceCollectionABC, environment: ApplicationEnvironment
self, services: ServiceCollectionABC, environment: Environment
) -> ServiceProviderABC:
services.add_scoped(TestService)
services.add_scoped(DITesterService)

View File

@@ -2,20 +2,22 @@ import time
from typing import Optional
from cpl.core.application.application_abc import ApplicationABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.configuration import Configuration
from cpl.core.console import Console
from cpl.core.dependency_injection import ServiceProviderABC
from cpl.core.environment import Environment
from cpl.core.log import LoggerABC
from cpl.core.pipes import IPAddressPipe
from cpl.mail import EMail, EMailClientABC
from test_settings import TestSettings
from test_service import TestService
from cpl.query.extension.list import List
from test_service import TestService
from test_settings import TestSettings
class Application(ApplicationABC):
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
ApplicationABC.__init__(self, config, services)
def __init__(self, services: ServiceProviderABC):
ApplicationABC.__init__(self, services)
self._logger: Optional[LoggerABC] = None
self._mailer: Optional[EMailClientABC] = None
@@ -25,7 +27,7 @@ class Application(ApplicationABC):
mail.add_header("Content-Type: text/plain; charset=utf-8")
mail.add_header("Content-Transfer-Encoding: quoted-printable")
mail.add_receiver("sven.heidemann@sh-edraft.de")
mail.subject = f"Test - {self._configuration.environment.host_name}"
mail.subject = f"Test - {Environment.get_host_name()}"
mail.body = "Dies ist ein Test :D"
self._mailer.send_mail(mail)
@@ -38,14 +40,8 @@ class Application(ApplicationABC):
self._mailer = self._services.get_service(EMailClientABC)
def main(self):
self._configuration.parse_console_arguments(self._services)
if self._configuration.environment.application_name != "":
self._logger.header(f"{self._configuration.environment.application_name}:")
self._logger.debug(f"Args: {self._configuration.additional_arguments}")
self._logger.debug(f"Host: {self._configuration.environment.host_name}")
self._logger.debug(f"Environment: {self._configuration.environment.environment_name}")
self._logger.debug(f"Customer: {self._configuration.environment.customer}")
self._logger.debug(f"Host: {Environment.get_host_name()}")
self._logger.debug(f"Environment: {Environment.get_environment()}")
Console.write_line(List(int, range(0, 10)).select(lambda x: f"x={x}").to_list())
Console.spinner("Test", self._wait, 2, spinner_foreground_color="red")
test: TestService = self._services.get_service(TestService)
@@ -61,12 +57,12 @@ class Application(ApplicationABC):
with self._services.create_scope() as s:
Console.write_line("with scope", s)
test_settings = self._configuration.get_configuration(TestSettings)
test_settings = Configuration.get(TestSettings)
Console.write_line(test_settings.value)
Console.write_line("reload config")
self._configuration.add_json_file(f"appsettings.json")
self._configuration.add_json_file(f"appsettings.{self._environment.environment_name}.json")
self._configuration.add_json_file(f"appsettings.{self._environment.host_name}.json", optional=True)
test_settings1 = self._configuration.get_configuration(TestSettings)
Configuration.add_json_file(f"appsettings.json")
Configuration.add_json_file(f"appsettings.{Environment.get_environment()}.json")
Configuration.add_json_file(f"appsettings.{Environment.get_host_name()}.json", optional=True)
test_settings1 = Configuration.get(TestSettings)
Console.write_line(test_settings1.value)
# self.test_send_mail()
# self.test_send_mail()

View File

@@ -1,14 +0,0 @@
from cpl.core.configuration import ConfigurationABC, ArgumentExecutableABC
from cpl.core.console import Console
from cpl.core.environment import ApplicationEnvironmentABC
class GenerateArgument(ArgumentExecutableABC):
def __init__(self, config: ConfigurationABC, env: ApplicationEnvironmentABC):
ArgumentExecutableABC.__init__(self)
self._config = config
self._env = env
def execute(self, args: list[str]):
Console.error("Generate:")
Console.write_line(args, self._env.environment_name)

View File

@@ -1,10 +0,0 @@
from cpl.core.configuration import ArgumentExecutableABC
from cpl.core.console import Console
class InstallArgument(ArgumentExecutableABC):
def __init__(self):
ArgumentExecutableABC.__init__(self)
def execute(self, args: list[str]):
Console.write_line("Install:", args)

View File

@@ -3,13 +3,11 @@ from cpl.core.application import ApplicationBuilder
from test_extension import TestExtension
from startup import Startup
from test_startup_extension import TestStartupExtension
from parameter_startup import ParameterStartup
def main():
app_builder = ApplicationBuilder(Application)
app_builder.use_startup(Startup)
app_builder.use_extension(ParameterStartup)
app_builder.use_extension(TestStartupExtension)
app_builder.use_extension(TestExtension)
app_builder.build().run()

View File

@@ -1,38 +0,0 @@
from arguments.generate_argument import GenerateArgument
from arguments.install_argument import InstallArgument
from cpl.core.application import StartupExtensionABC
from cpl.core.configuration import ConfigurationABC, ArgumentTypeEnum
from cpl.core.dependency_injection import ServiceCollectionABC
from cpl.core.environment import ApplicationEnvironmentABC
class ParameterStartup(StartupExtensionABC):
def __init__(self):
StartupExtensionABC.__init__(self)
def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC):
config.create_console_argument(
ArgumentTypeEnum.Executable, "", "generate", ["g", "G"], GenerateArgument
).add_console_argument(ArgumentTypeEnum.Variable, "", "abc", ["a", "A"], " ").add_console_argument(
ArgumentTypeEnum.Variable, "", "class", ["c", "C"], " "
).add_console_argument(
ArgumentTypeEnum.Variable, "", "enum", ["e", "E"], " "
).add_console_argument(
ArgumentTypeEnum.Variable, "", "service", ["s", "S"], " "
).add_console_argument(
ArgumentTypeEnum.Variable, "", "settings", ["st", "ST"], " "
).add_console_argument(
ArgumentTypeEnum.Variable, "", "thread", ["t", "T"], " "
).add_console_argument(
ArgumentTypeEnum.Variable, "-", "o", ["o", "O"], "="
).add_console_argument(
ArgumentTypeEnum.Flag, "--", "virtual", ["v", "V"]
)
config.create_console_argument(
ArgumentTypeEnum.Executable, "", "install", ["i", "I"], InstallArgument
).add_console_argument(ArgumentTypeEnum.Flag, "--", "virtual", ["v", "V"]).add_console_argument(
ArgumentTypeEnum.Flag, "--", "simulate", ["s", "S"]
)
def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC):
services.add_transient(GenerateArgument).add_singleton(InstallArgument)

View File

@@ -1,9 +1,7 @@
from cpl.core.application import StartupABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.configuration import Configuration
from cpl.core.dependency_injection import ServiceCollectionABC, ServiceProviderABC
from cpl.core.environment import ApplicationEnvironmentABC
from cpl.core.log import Logger, LoggerABC
from cpl.mail import EMailClient, EMailClientABC
from cpl.core.environment import Environment
from cpl.core.pipes import IPAddressPipe
from test_service import TestService
@@ -12,14 +10,12 @@ class Startup(StartupABC):
def __init__(self):
StartupABC.__init__(self)
def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC) -> ConfigurationABC:
config.add_environment_variables("PYTHON_")
config.add_environment_variables("CPLT_")
def configure_configuration(self, config: Configuration, env: Environment):
config.add_json_file(f"appsettings.json")
config.add_json_file(f"appsettings.{config.environment.environment_name}.json")
config.add_json_file(f"appsettings.{config.environment.host_name}.json", optional=True)
config.add_json_file(f"appsettings.{env.get_environment()}.json")
config.add_json_file(f"appsettings.{env.get_host_name()}.json", optional=True)
def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC) -> ServiceProviderABC:
def configure_services(self, services: ServiceCollectionABC, env: Environment):
services.add_logging()
services.add_mail()
services.add_transient(IPAddressPipe)

View File

@@ -1,5 +1,5 @@
from cpl.core.application import ApplicationExtensionABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.configuration import Configuration
from cpl.core.console import Console
from cpl.core.dependency_injection import ServiceProviderABC
@@ -8,5 +8,5 @@ class TestExtension(ApplicationExtensionABC):
def __init__(self):
ApplicationExtensionABC.__init__(self)
def run(self, config: ConfigurationABC, services: ServiceProviderABC):
def run(self, config: Configuration, services: ServiceProviderABC):
Console.write_line("Hello World from App Extension")

View File

@@ -4,11 +4,10 @@ from cpl.core.pipes.ip_address_pipe import IPAddressPipe
class TestService:
def __init__(self, provider: ServiceProviderABC, ip_pipe: IPAddressPipe):
def __init__(self, provider: ServiceProviderABC):
self._provider = provider
self._ip_pipe = ip_pipe
def run(self):
Console.write_line("Hello World!", self._provider)
ip = [192, 168, 178, 30]
Console.write_line(ip, self._ip_pipe.transform(ip))
Console.write_line(ip, IPAddressPipe.to_str(ip))

View File

@@ -1,16 +1,16 @@
from cpl.core.application import StartupExtensionABC
from cpl.core.configuration import ConfigurationABC
from cpl.core.configuration import Configuration
from cpl.core.console import Console
from cpl.core.dependency_injection import ServiceCollectionABC
from cpl.core.environment import ApplicationEnvironmentABC
from cpl.core.environment import Environment
class TestStartupExtension(StartupExtensionABC):
def __init__(self):
StartupExtensionABC.__init__(self)
def configure_configuration(self, config: ConfigurationABC, env: ApplicationEnvironmentABC):
def configure_configuration(self, config: Configuration, env: Environment):
Console.write_line("config")
def configure_services(self, services: ServiceCollectionABC, env: ApplicationEnvironmentABC):
def configure_services(self, services: ServiceCollectionABC, env: Environment):
Console.write_line("services")

View File

@@ -1,7 +1,7 @@
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.core.environment import Environment
class Startup(StartupABC):
@@ -9,13 +9,13 @@ class Startup(StartupABC):
StartupABC.__init__(self)
def configure_configuration(
self, configuration: ConfigurationABC, environment: ApplicationEnvironment
self, configuration: ConfigurationABC, environment: Environment
) -> ConfigurationABC:
configuration.add_json_file("appsettings.json")
return configuration
def configure_services(
self, services: ServiceCollectionABC, environment: ApplicationEnvironment
self, services: ServiceCollectionABC, environment: Environment
) -> ServiceProviderABC:
services.add_translation()
return services.build_service_provider()