2021.4 #19
@ -23,8 +23,6 @@ from collections import namedtuple
|
|||||||
from .application_abc import ApplicationABC
|
from .application_abc import ApplicationABC
|
||||||
from .application_builder import ApplicationBuilder
|
from .application_builder import ApplicationBuilder
|
||||||
from .application_builder_abc import ApplicationBuilderABC
|
from .application_builder_abc import ApplicationBuilderABC
|
||||||
from .application_runtime import ApplicationRuntime
|
|
||||||
from .application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from .startup_abc import StartupABC
|
from .startup_abc import StartupABC
|
||||||
|
|
||||||
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
||||||
|
from cpl.environment import ApplicationEnvironmentABC
|
||||||
|
|
||||||
|
|
||||||
class ApplicationABC(ABC):
|
class ApplicationABC(ABC):
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceProviderABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||||
"""
|
"""
|
||||||
ABC of application
|
ABC of application
|
||||||
"""
|
"""
|
||||||
self._configuration: Optional[ConfigurationABC] = config
|
self._configuration: Optional[ConfigurationABC] = config
|
||||||
self._runtime: Optional[ApplicationRuntimeABC] = runtime
|
self._environment: Optional[ApplicationEnvironmentABC] = self._configuration.environment
|
||||||
self._services: Optional[ServiceProviderABC] = services
|
self._services: Optional[ServiceProviderABC] = services
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -2,7 +2,6 @@ from typing import Type, Optional
|
|||||||
|
|
||||||
from cpl.application.application_abc import ApplicationABC
|
from cpl.application.application_abc import ApplicationABC
|
||||||
from cpl.application.application_builder_abc import ApplicationBuilderABC
|
from cpl.application.application_builder_abc import ApplicationBuilderABC
|
||||||
from cpl.application.application_runtime import ApplicationRuntime
|
|
||||||
from cpl.application.startup_abc import StartupABC
|
from cpl.application.startup_abc import StartupABC
|
||||||
from cpl.configuration import Configuration
|
from cpl.configuration import Configuration
|
||||||
from cpl.dependency_injection.service_collection import ServiceCollection
|
from cpl.dependency_injection.service_collection import ServiceCollection
|
||||||
@ -19,8 +18,8 @@ class ApplicationBuilder(ApplicationBuilderABC):
|
|||||||
self._startup: Optional[StartupABC] = None
|
self._startup: Optional[StartupABC] = None
|
||||||
|
|
||||||
self._configuration = Configuration()
|
self._configuration = Configuration()
|
||||||
self._runtime = ApplicationRuntime()
|
self._environment = self._configuration.environment
|
||||||
self._services = ServiceCollection(self._configuration, self._runtime)
|
self._services = ServiceCollection(self._configuration)
|
||||||
|
|
||||||
def use_startup(self, startup: Type[StartupABC]):
|
def use_startup(self, startup: Type[StartupABC]):
|
||||||
"""
|
"""
|
||||||
@ -28,7 +27,7 @@ class ApplicationBuilder(ApplicationBuilderABC):
|
|||||||
:param startup:
|
:param startup:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
self._startup = startup(self._configuration, self._runtime, self._services)
|
self._startup = startup(self._configuration, self._services)
|
||||||
|
|
||||||
def build(self) -> ApplicationABC:
|
def build(self) -> ApplicationABC:
|
||||||
"""
|
"""
|
||||||
@ -39,4 +38,4 @@ class ApplicationBuilder(ApplicationBuilderABC):
|
|||||||
self._startup.configure_configuration()
|
self._startup.configure_configuration()
|
||||||
self._startup.configure_services()
|
self._startup.configure_services()
|
||||||
|
|
||||||
return self._app(self._configuration, self._runtime, self._services.build_service_provider())
|
return self._app(self._configuration, self._services.build_service_provider())
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
import pathlib
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
|
|
||||||
|
|
||||||
class ApplicationRuntime(ApplicationRuntimeABC):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
"""
|
|
||||||
Representation of the application runtime
|
|
||||||
"""
|
|
||||||
ApplicationRuntimeABC.__init__(self)
|
|
||||||
|
|
||||||
self._start_time: datetime = datetime.now()
|
|
||||||
self._end_time: datetime = datetime.now()
|
|
||||||
self._working_directory = pathlib.Path().absolute()
|
|
||||||
self._runtime_directory = pathlib.Path(__file__).parent.absolute()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def start_time(self) -> datetime:
|
|
||||||
return self._start_time
|
|
||||||
|
|
||||||
@property
|
|
||||||
def end_time(self) -> datetime:
|
|
||||||
return self._end_time
|
|
||||||
|
|
||||||
@end_time.setter
|
|
||||||
def end_time(self, end_time: datetime):
|
|
||||||
self._end_time = end_time
|
|
||||||
|
|
||||||
@property
|
|
||||||
def date_time_now(self) -> datetime:
|
|
||||||
return datetime.now()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def working_directory(self) -> str:
|
|
||||||
return self._working_directory
|
|
||||||
|
|
||||||
def set_working_directory(self, path: str = ''):
|
|
||||||
if path != '':
|
|
||||||
self._working_directory = path
|
|
||||||
return
|
|
||||||
|
|
||||||
self._working_directory = pathlib.Path().absolute()
|
|
||||||
|
|
||||||
@property
|
|
||||||
def runtime_directory(self) -> str:
|
|
||||||
return self._runtime_directory
|
|
||||||
|
|
||||||
def set_runtime_directory(self, file: str):
|
|
||||||
self._runtime_directory = pathlib.Path(file).parent.absolute()
|
|
@ -1,49 +0,0 @@
|
|||||||
from abc import ABC, abstractmethod
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
|
|
||||||
class ApplicationRuntimeABC(ABC):
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def __init__(self):
|
|
||||||
"""
|
|
||||||
ABC for application runtime
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
@abstractmethod
|
|
||||||
def start_time(self) -> datetime: pass
|
|
||||||
|
|
||||||
@start_time.setter
|
|
||||||
@abstractmethod
|
|
||||||
def start_time(self, start_time: datetime): pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
@abstractmethod
|
|
||||||
def end_time(self): pass
|
|
||||||
|
|
||||||
@end_time.setter
|
|
||||||
@abstractmethod
|
|
||||||
def end_time(self, end_time: datetime): pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
@abstractmethod
|
|
||||||
def date_time_now(self) -> datetime: pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
@abstractmethod
|
|
||||||
def working_directory(self) -> str: pass
|
|
||||||
|
|
||||||
@property
|
|
||||||
@abstractmethod
|
|
||||||
def runtime_directory(self) -> str: pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def set_runtime_directory(self, runtime_directory: str):
|
|
||||||
"""
|
|
||||||
Sets the current runtime directory
|
|
||||||
:param runtime_directory:
|
|
||||||
:return:
|
|
||||||
"""
|
|
||||||
pass
|
|
@ -1,6 +1,5 @@
|
|||||||
from typing import Union, Type, Callable, Optional
|
from typing import Union, Type, Callable, Optional
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.database.context import DatabaseContextABC
|
from cpl.database.context import DatabaseContextABC
|
||||||
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
||||||
@ -12,10 +11,9 @@ from cpl.dependency_injection.service_provider import ServiceProvider
|
|||||||
|
|
||||||
class ServiceCollection(ServiceCollectionABC):
|
class ServiceCollection(ServiceCollectionABC):
|
||||||
|
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC):
|
def __init__(self, config: ConfigurationABC):
|
||||||
ServiceCollectionABC.__init__(self)
|
ServiceCollectionABC.__init__(self)
|
||||||
self._configuration: ConfigurationABC = config
|
self._configuration: ConfigurationABC = config
|
||||||
self._runtime: ApplicationRuntimeABC = runtime
|
|
||||||
|
|
||||||
self._database_context: Optional[DatabaseContextABC] = None
|
self._database_context: Optional[DatabaseContextABC] = None
|
||||||
self._service_descriptors: list[ServiceDescriptor] = []
|
self._service_descriptors: list[ServiceDescriptor] = []
|
||||||
@ -63,4 +61,4 @@ class ServiceCollection(ServiceCollectionABC):
|
|||||||
self._add_descriptor(service_type, ServiceLifetimeEnum.transient)
|
self._add_descriptor(service_type, ServiceLifetimeEnum.transient)
|
||||||
|
|
||||||
def build_service_provider(self) -> ServiceProviderABC:
|
def build_service_provider(self) -> ServiceProviderABC:
|
||||||
return ServiceProvider(self._service_descriptors, self._configuration, self._runtime)
|
return ServiceProvider(self._service_descriptors, self._configuration)
|
||||||
|
@ -2,7 +2,6 @@ from collections import Callable
|
|||||||
from inspect import signature, Parameter
|
from inspect import signature, Parameter
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.configuration.configuration_model_abc import ConfigurationModelABC
|
from cpl.configuration.configuration_model_abc import ConfigurationModelABC
|
||||||
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
||||||
@ -13,13 +12,11 @@ from cpl.environment.application_environment_abc import ApplicationEnvironmentAB
|
|||||||
|
|
||||||
class ServiceProvider(ServiceProviderABC):
|
class ServiceProvider(ServiceProviderABC):
|
||||||
|
|
||||||
def __init__(self, service_descriptors: list[ServiceDescriptor], config: ConfigurationABC,
|
def __init__(self, service_descriptors: list[ServiceDescriptor], config: ConfigurationABC):
|
||||||
runtime: ApplicationRuntimeABC):
|
|
||||||
ServiceProviderABC.__init__(self)
|
ServiceProviderABC.__init__(self)
|
||||||
|
|
||||||
self._service_descriptors: list[ServiceDescriptor] = service_descriptors
|
self._service_descriptors: list[ServiceDescriptor] = service_descriptors
|
||||||
self._configuration: ConfigurationABC = config
|
self._configuration: ConfigurationABC = config
|
||||||
self._runtime: ApplicationRuntimeABC = runtime
|
|
||||||
|
|
||||||
def _find_service(self, service_type: type) -> [ServiceDescriptor]:
|
def _find_service(self, service_type: type) -> [ServiceDescriptor]:
|
||||||
for descriptor in self._service_descriptors:
|
for descriptor in self._service_descriptors:
|
||||||
@ -59,9 +56,6 @@ class ServiceProvider(ServiceProviderABC):
|
|||||||
if issubclass(parameter.annotation, ServiceProviderABC):
|
if issubclass(parameter.annotation, ServiceProviderABC):
|
||||||
params.append(self)
|
params.append(self)
|
||||||
|
|
||||||
elif issubclass(parameter.annotation, ApplicationRuntimeABC):
|
|
||||||
params.append(self._runtime)
|
|
||||||
|
|
||||||
elif issubclass(parameter.annotation, ApplicationEnvironmentABC):
|
elif issubclass(parameter.annotation, ApplicationEnvironmentABC):
|
||||||
params.append(self._configuration.environment)
|
params.append(self._configuration.environment)
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import pathlib
|
||||||
|
from datetime import datetime
|
||||||
from socket import gethostname
|
from socket import gethostname
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@ -20,6 +22,11 @@ class ApplicationEnvironment(ApplicationEnvironmentABC):
|
|||||||
self._customer: Optional[str] = None
|
self._customer: Optional[str] = None
|
||||||
self._content_root_path: Optional[str] = crp
|
self._content_root_path: Optional[str] = crp
|
||||||
|
|
||||||
|
self._start_time: datetime = datetime.now()
|
||||||
|
self._end_time: datetime = datetime.now()
|
||||||
|
self._working_directory = pathlib.Path().absolute()
|
||||||
|
self._runtime_directory = pathlib.Path(__file__).parent.absolute()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def environment_name(self) -> str:
|
def environment_name(self) -> str:
|
||||||
return str(self._environment_name.value)
|
return str(self._environment_name.value)
|
||||||
@ -55,3 +62,37 @@ class ApplicationEnvironment(ApplicationEnvironmentABC):
|
|||||||
@property
|
@property
|
||||||
def host_name(self):
|
def host_name(self):
|
||||||
return gethostname()
|
return gethostname()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def start_time(self) -> datetime:
|
||||||
|
return self._start_time
|
||||||
|
|
||||||
|
@property
|
||||||
|
def end_time(self) -> datetime:
|
||||||
|
return self._end_time
|
||||||
|
|
||||||
|
@end_time.setter
|
||||||
|
def end_time(self, end_time: datetime):
|
||||||
|
self._end_time = end_time
|
||||||
|
|
||||||
|
@property
|
||||||
|
def date_time_now(self) -> datetime:
|
||||||
|
return datetime.now()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def working_directory(self) -> str:
|
||||||
|
return self._working_directory
|
||||||
|
|
||||||
|
def set_working_directory(self, path: str = ''):
|
||||||
|
if path != '':
|
||||||
|
self._working_directory = path
|
||||||
|
return
|
||||||
|
|
||||||
|
self._working_directory = pathlib.Path().absolute()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def runtime_directory(self) -> str:
|
||||||
|
return self._runtime_directory
|
||||||
|
|
||||||
|
def set_runtime_directory(self, file: str):
|
||||||
|
self._runtime_directory = pathlib.Path(file).parent.absolute()
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
class ApplicationEnvironmentABC(ABC):
|
class ApplicationEnvironmentABC(ABC):
|
||||||
@ -45,3 +46,40 @@ class ApplicationEnvironmentABC(ABC):
|
|||||||
@property
|
@property
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def host_name(self) -> str: pass
|
def host_name(self) -> str: pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def start_time(self) -> datetime: pass
|
||||||
|
|
||||||
|
@start_time.setter
|
||||||
|
@abstractmethod
|
||||||
|
def start_time(self, start_time: datetime): pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def end_time(self): pass
|
||||||
|
|
||||||
|
@end_time.setter
|
||||||
|
@abstractmethod
|
||||||
|
def end_time(self, end_time: datetime): pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def date_time_now(self) -> datetime: pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def working_directory(self) -> str: pass
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def runtime_directory(self) -> str: pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def set_runtime_directory(self, runtime_directory: str):
|
||||||
|
"""
|
||||||
|
Sets the current runtime directory
|
||||||
|
:param runtime_directory:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
@ -3,9 +3,9 @@ import os
|
|||||||
import traceback
|
import traceback
|
||||||
from string import Template
|
from string import Template
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl.logging.logger_abc import LoggerABC
|
from cpl.logging.logger_abc import LoggerABC
|
||||||
from cpl.logging.logging_level_enum import LoggingLevelEnum
|
from cpl.logging.logging_level_enum import LoggingLevelEnum
|
||||||
from cpl.logging.logging_settings import LoggingSettings
|
from cpl.logging.logging_settings import LoggingSettings
|
||||||
@ -14,7 +14,7 @@ from cpl.time.time_format_settings import TimeFormatSettings
|
|||||||
|
|
||||||
class Logger(LoggerABC):
|
class Logger(LoggerABC):
|
||||||
|
|
||||||
def __init__(self, logging_settings: LoggingSettings, time_format: TimeFormatSettings, app_runtime: ApplicationRuntimeABC):
|
def __init__(self, logging_settings: LoggingSettings, time_format: TimeFormatSettings, env: ApplicationEnvironmentABC):
|
||||||
"""
|
"""
|
||||||
Service for logging
|
Service for logging
|
||||||
:param logging_settings:
|
:param logging_settings:
|
||||||
@ -23,13 +23,13 @@ class Logger(LoggerABC):
|
|||||||
"""
|
"""
|
||||||
LoggerABC.__init__(self)
|
LoggerABC.__init__(self)
|
||||||
|
|
||||||
self._app_runtime = app_runtime
|
self._env = env
|
||||||
self._log_settings: LoggingSettings = logging_settings
|
self._log_settings: LoggingSettings = logging_settings
|
||||||
self._time_format_settings: TimeFormatSettings = time_format
|
self._time_format_settings: TimeFormatSettings = time_format
|
||||||
|
|
||||||
self._log = Template(self._log_settings.filename).substitute(
|
self._log = Template(self._log_settings.filename).substitute(
|
||||||
date_time_now=self._app_runtime.date_time_now.strftime(self._time_format_settings.date_time_format),
|
date_time_now=self._env.date_time_now.strftime(self._time_format_settings.date_time_format),
|
||||||
start_time=self._app_runtime.start_time.strftime(self._time_format_settings.date_time_log_format)
|
start_time=self._env.start_time.strftime(self._time_format_settings.date_time_log_format)
|
||||||
)
|
)
|
||||||
self._path = self._log_settings.path
|
self._path = self._log_settings.path
|
||||||
self._level = self._log_settings.level
|
self._level = self._log_settings.level
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from cpl.application.application_abc import ApplicationABC
|
from cpl.application.application_abc import ApplicationABC
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.dependency_injection import ServiceProviderABC
|
from cpl.dependency_injection import ServiceProviderABC
|
||||||
@ -22,11 +21,11 @@ from cpl_cli.command.version_service import VersionService
|
|||||||
|
|
||||||
class CLI(ApplicationABC):
|
class CLI(ApplicationABC):
|
||||||
|
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceProviderABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||||
"""
|
"""
|
||||||
CPL CLI
|
CPL CLI
|
||||||
"""
|
"""
|
||||||
ApplicationABC.__init__(self, config, runtime, services)
|
ApplicationABC.__init__(self, config, services)
|
||||||
|
|
||||||
self._command_handler: Optional[CommandHandler] = None
|
self._command_handler: Optional[CommandHandler] = None
|
||||||
|
|
||||||
|
@ -4,9 +4,9 @@ import subprocess
|
|||||||
|
|
||||||
from packaging import version
|
from packaging import version
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl.utils.pip import Pip
|
from cpl.utils.pip import Pip
|
||||||
from cpl_cli.cli_settings import CLISettings
|
from cpl_cli.cli_settings import CLISettings
|
||||||
from cpl_cli.command_abc import CommandABC
|
from cpl_cli.command_abc import CommandABC
|
||||||
@ -18,18 +18,18 @@ from cpl_cli.error import Error
|
|||||||
|
|
||||||
class InstallService(CommandABC):
|
class InstallService(CommandABC):
|
||||||
|
|
||||||
def __init__(self, runtime: ApplicationRuntimeABC, build_settings: BuildSettings, project_settings: ProjectSettings,
|
def __init__(self, env: ApplicationEnvironmentABC, build_settings: BuildSettings, project_settings: ProjectSettings,
|
||||||
cli_settings: CLISettings):
|
cli_settings: CLISettings):
|
||||||
"""
|
"""
|
||||||
Service for the CLI command install
|
Service for the CLI command install
|
||||||
:param runtime:
|
:param env:
|
||||||
:param build_settings:
|
:param build_settings:
|
||||||
:param project_settings:
|
:param project_settings:
|
||||||
:param cli_settings:
|
:param cli_settings:
|
||||||
"""
|
"""
|
||||||
CommandABC.__init__(self)
|
CommandABC.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
self._env = env
|
||||||
self._build_settings = build_settings
|
self._build_settings = build_settings
|
||||||
self._project_settings = project_settings
|
self._project_settings = project_settings
|
||||||
self._cli_settings = cli_settings
|
self._cli_settings = cli_settings
|
||||||
@ -147,7 +147,7 @@ class InstallService(CommandABC):
|
|||||||
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
with open(os.path.join(self._runtime.working_directory, 'cpl.json'), 'w') as project_file:
|
with open(os.path.join(self._env.working_directory, 'cpl.json'), 'w') as project_file:
|
||||||
project_file.write(json.dumps(config, indent=2))
|
project_file.write(json.dumps(config, indent=2))
|
||||||
project_file.close()
|
project_file.close()
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ from packaging import version
|
|||||||
|
|
||||||
import cpl
|
import cpl
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
@ -29,16 +28,15 @@ from cpl_cli.templates.template_file_abc import TemplateFileABC
|
|||||||
|
|
||||||
class NewService(CommandABC):
|
class NewService(CommandABC):
|
||||||
|
|
||||||
def __init__(self, configuration: ConfigurationABC, runtime: ApplicationRuntimeABC):
|
def __init__(self, configuration: ConfigurationABC):
|
||||||
"""
|
"""
|
||||||
Service for the CLI command new
|
Service for the CLI command new
|
||||||
:param configuration:
|
:param configuration:
|
||||||
:param runtime:
|
|
||||||
"""
|
"""
|
||||||
CommandABC.__init__(self)
|
CommandABC.__init__(self)
|
||||||
|
|
||||||
self._config = configuration
|
self._config = configuration
|
||||||
self._runtime = runtime
|
self._env = self._config.environment
|
||||||
|
|
||||||
self._project: ProjectSettings = ProjectSettings()
|
self._project: ProjectSettings = ProjectSettings()
|
||||||
self._project_dict = {}
|
self._project_dict = {}
|
||||||
@ -128,7 +126,7 @@ class NewService(CommandABC):
|
|||||||
Gets project path
|
Gets project path
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
project_path = os.path.join(self._runtime.working_directory, self._project.name)
|
project_path = os.path.join(self._env.working_directory, self._project.name)
|
||||||
if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0:
|
if os.path.isdir(project_path) and len(os.listdir(project_path)) > 0:
|
||||||
Console.error('Project path is not empty\n')
|
Console.error('Project path is not empty\n')
|
||||||
return None
|
return None
|
||||||
|
@ -2,9 +2,9 @@ import json
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl.utils.pip import Pip
|
from cpl.utils.pip import Pip
|
||||||
from cpl_cli.command_abc import CommandABC
|
from cpl_cli.command_abc import CommandABC
|
||||||
from cpl_cli.configuration.build_settings import BuildSettings
|
from cpl_cli.configuration.build_settings import BuildSettings
|
||||||
@ -14,17 +14,17 @@ from cpl_cli.configuration.settings_helper import SettingsHelper
|
|||||||
|
|
||||||
class UninstallService(CommandABC):
|
class UninstallService(CommandABC):
|
||||||
|
|
||||||
def __init__(self, runtime: ApplicationRuntimeABC, build_settings: BuildSettings,
|
def __init__(self, env: ApplicationEnvironmentABC, build_settings: BuildSettings,
|
||||||
project_settings: ProjectSettings):
|
project_settings: ProjectSettings):
|
||||||
"""
|
"""
|
||||||
Service for the CLI command uninstall
|
Service for the CLI command uninstall
|
||||||
:param runtime:
|
:param env:
|
||||||
:param build_settings:
|
:param build_settings:
|
||||||
:param project_settings:
|
:param project_settings:
|
||||||
"""
|
"""
|
||||||
CommandABC.__init__(self)
|
CommandABC.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
self._env = env
|
||||||
|
|
||||||
self._build_settings = build_settings
|
self._build_settings = build_settings
|
||||||
self._project_settings = project_settings
|
self._project_settings = project_settings
|
||||||
@ -74,7 +74,7 @@ class UninstallService(CommandABC):
|
|||||||
ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings),
|
ProjectSettings.__name__: SettingsHelper.get_project_settings_dict(self._project_settings),
|
||||||
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
||||||
}
|
}
|
||||||
with open(os.path.join(self._runtime.working_directory, 'cpl.json'), 'w') as project_file:
|
with open(os.path.join(self._env.working_directory, 'cpl.json'), 'w') as project_file:
|
||||||
project_file.write(json.dumps(config, indent=2))
|
project_file.write(json.dumps(config, indent=2))
|
||||||
project_file.close()
|
project_file.close()
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@ import json
|
|||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl.utils.pip import Pip
|
from cpl.utils.pip import Pip
|
||||||
from cpl_cli.cli_settings import CLISettings
|
from cpl_cli.cli_settings import CLISettings
|
||||||
from cpl_cli.command_abc import CommandABC
|
from cpl_cli.command_abc import CommandABC
|
||||||
@ -16,20 +16,20 @@ from cpl_cli.configuration.settings_helper import SettingsHelper
|
|||||||
class UpdateService(CommandABC):
|
class UpdateService(CommandABC):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
runtime: ApplicationRuntimeABC,
|
env: ApplicationEnvironmentABC,
|
||||||
build_settings: BuildSettings,
|
build_settings: BuildSettings,
|
||||||
project_settings: ProjectSettings,
|
project_settings: ProjectSettings,
|
||||||
cli_settings: CLISettings):
|
cli_settings: CLISettings):
|
||||||
"""
|
"""
|
||||||
Service for the CLI command update
|
Service for the CLI command update
|
||||||
:param runtime:
|
:param env:
|
||||||
:param build_settings:
|
:param build_settings:
|
||||||
:param project_settings:
|
:param project_settings:
|
||||||
:param cli_settings:
|
:param cli_settings:
|
||||||
"""
|
"""
|
||||||
CommandABC.__init__(self)
|
CommandABC.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
self._env = env
|
||||||
self._build_settings = build_settings
|
self._build_settings = build_settings
|
||||||
self._project_settings = project_settings
|
self._project_settings = project_settings
|
||||||
self._cli_settings = cli_settings
|
self._cli_settings = cli_settings
|
||||||
@ -117,7 +117,7 @@ class UpdateService(CommandABC):
|
|||||||
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
BuildSettings.__name__: SettingsHelper.get_build_settings_dict(self._build_settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
with open(os.path.join(self._runtime.working_directory, 'cpl.json'), 'w') as project:
|
with open(os.path.join(self._env.working_directory, 'cpl.json'), 'w') as project:
|
||||||
project.write(json.dumps(config, indent=2))
|
project.write(json.dumps(config, indent=2))
|
||||||
project.close()
|
project.close()
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.dependency_injection.service_abc import ServiceABC
|
from cpl.dependency_injection.service_abc import ServiceABC
|
||||||
@ -11,16 +10,16 @@ from cpl_cli.command_model import CommandModel
|
|||||||
|
|
||||||
class CommandHandler(ServiceABC):
|
class CommandHandler(ServiceABC):
|
||||||
|
|
||||||
def __init__(self, runtime: ApplicationRuntimeABC, config: ConfigurationABC, services: ServiceProviderABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||||
"""
|
"""
|
||||||
Service to handle incoming commands and args
|
Service to handle incoming commands and args
|
||||||
:param runtime:
|
:param config:
|
||||||
:param services:
|
:param services:
|
||||||
"""
|
"""
|
||||||
ServiceABC.__init__(self)
|
ServiceABC.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
|
||||||
self._config = config
|
self._config = config
|
||||||
|
self._env = self._config.environment
|
||||||
self._services = services
|
self._services = services
|
||||||
|
|
||||||
self._commands: list[CommandModel] = []
|
self._commands: list[CommandModel] = []
|
||||||
@ -44,7 +43,7 @@ class CommandHandler(ServiceABC):
|
|||||||
"""
|
"""
|
||||||
for command in self._commands:
|
for command in self._commands:
|
||||||
if cmd == command.name or cmd in command.aliases:
|
if cmd == command.name or cmd in command.aliases:
|
||||||
if command.is_project_needed and not os.path.isfile(os.path.join(self._runtime.working_directory, 'cpl.json')):
|
if command.is_project_needed and not os.path.isfile(os.path.join(self._env.working_directory, 'cpl.json')):
|
||||||
Error.error('The command requires to be run in an CPL project, but a project could not be found.')
|
Error.error('The command requires to be run in an CPL project, but a project could not be found.')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -6,28 +6,28 @@ import psutil as psutil
|
|||||||
from watchdog.events import FileSystemEventHandler
|
from watchdog.events import FileSystemEventHandler
|
||||||
from watchdog.observers import Observer
|
from watchdog.observers import Observer
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.dependency_injection.service_abc import ServiceABC
|
from cpl.dependency_injection.service_abc import ServiceABC
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl_cli.configuration.build_settings import BuildSettings
|
from cpl_cli.configuration.build_settings import BuildSettings
|
||||||
from cpl_cli.live_server.live_server_thread import LiveServerThread
|
from cpl_cli.live_server.live_server_thread import LiveServerThread
|
||||||
|
|
||||||
|
|
||||||
class LiveServerService(ServiceABC, FileSystemEventHandler):
|
class LiveServerService(ServiceABC, FileSystemEventHandler):
|
||||||
|
|
||||||
def __init__(self, runtime: ApplicationRuntimeABC, build_settings: BuildSettings):
|
def __init__(self, env: ApplicationEnvironmentABC, build_settings: BuildSettings):
|
||||||
"""
|
"""
|
||||||
Service for the live development server
|
Service for the live development server
|
||||||
:param runtime:
|
:param env:
|
||||||
:param build_settings:
|
:param build_settings:
|
||||||
"""
|
"""
|
||||||
ServiceABC.__init__(self)
|
ServiceABC.__init__(self)
|
||||||
FileSystemEventHandler.__init__(self)
|
FileSystemEventHandler.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
self._env = env
|
||||||
self._build_settings = build_settings
|
self._build_settings = build_settings
|
||||||
|
|
||||||
self._src_dir = os.path.join(self._runtime.working_directory, self._build_settings.source_path)
|
self._src_dir = os.path.join(self._env.working_directory, self._build_settings.source_path)
|
||||||
self._ls_thread = None
|
self._ls_thread = None
|
||||||
self._observer = None
|
self._observer = None
|
||||||
|
|
||||||
|
@ -7,9 +7,9 @@ import setuptools
|
|||||||
from packaging import version
|
from packaging import version
|
||||||
from setuptools import sandbox
|
from setuptools import sandbox
|
||||||
|
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
from cpl.console.foreground_color_enum import ForegroundColorEnum
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
|
from cpl.environment.application_environment_abc import ApplicationEnvironmentABC
|
||||||
from cpl_cli.configuration.build_settings import BuildSettings
|
from cpl_cli.configuration.build_settings import BuildSettings
|
||||||
from cpl_cli.configuration.project_settings import ProjectSettings
|
from cpl_cli.configuration.project_settings import ProjectSettings
|
||||||
from cpl_cli.publish.publisher_abc import PublisherABC
|
from cpl_cli.publish.publisher_abc import PublisherABC
|
||||||
@ -19,21 +19,21 @@ from cpl_cli.templates.publish.setup_template import SetupTemplate
|
|||||||
|
|
||||||
class PublisherService(PublisherABC):
|
class PublisherService(PublisherABC):
|
||||||
|
|
||||||
def __init__(self, runtime: ApplicationRuntimeABC, project: ProjectSettings, build: BuildSettings):
|
def __init__(self, env: ApplicationEnvironmentABC, project: ProjectSettings, build: BuildSettings):
|
||||||
"""
|
"""
|
||||||
Service to build or publish files for distribution
|
Service to build or publish files for distribution
|
||||||
:param runtime:
|
:param env:
|
||||||
:param project:
|
:param project:
|
||||||
:param build:
|
:param build:
|
||||||
"""
|
"""
|
||||||
PublisherABC.__init__(self)
|
PublisherABC.__init__(self)
|
||||||
|
|
||||||
self._runtime = runtime
|
self._env = env
|
||||||
self._project_settings = project
|
self._project_settings = project
|
||||||
self._build_settings = build
|
self._build_settings = build
|
||||||
|
|
||||||
self._source_path = os.path.join(self._runtime.working_directory, self._build_settings.source_path)
|
self._source_path = os.path.join(self._env.working_directory, self._build_settings.source_path)
|
||||||
self._output_path = os.path.join(self._runtime.working_directory, self._build_settings.output_path)
|
self._output_path = os.path.join(self._env.working_directory, self._build_settings.output_path)
|
||||||
|
|
||||||
self._included_files: list[str] = []
|
self._included_files: list[str] = []
|
||||||
self._included_dirs: list[str] = []
|
self._included_dirs: list[str] = []
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.application.startup_abc import StartupABC
|
from cpl.application.startup_abc import StartupABC
|
||||||
from cpl.configuration.console_argument import ConsoleArgument
|
from cpl.configuration.console_argument import ConsoleArgument
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
@ -23,21 +22,21 @@ from cpl_cli.publish.publisher_abc import PublisherABC
|
|||||||
|
|
||||||
class Startup(StartupABC):
|
class Startup(StartupABC):
|
||||||
|
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceCollectionABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceCollectionABC):
|
||||||
StartupABC.__init__(self)
|
StartupABC.__init__(self)
|
||||||
|
|
||||||
self._configuration = config
|
self._configuration = config
|
||||||
self._application_runtime = runtime
|
self._env = self._configuration.environment
|
||||||
self._services = services
|
self._services = services
|
||||||
|
|
||||||
self._application_runtime.set_runtime_directory(__file__)
|
self._env.set_runtime_directory(__file__)
|
||||||
|
|
||||||
def configure_configuration(self) -> ConfigurationABC:
|
def configure_configuration(self) -> ConfigurationABC:
|
||||||
self._configuration.argument_error_function = Error.error
|
self._configuration.argument_error_function = Error.error
|
||||||
|
|
||||||
self._configuration.add_environment_variables('PYTHON_')
|
self._configuration.add_environment_variables('PYTHON_')
|
||||||
self._configuration.add_environment_variables('CPL_')
|
self._configuration.add_environment_variables('CPL_')
|
||||||
self._configuration.add_json_file('appsettings.json', path=self._application_runtime.runtime_directory,
|
self._configuration.add_json_file('appsettings.json', path=self._env.runtime_directory,
|
||||||
optional=False, output=False)
|
optional=False, output=False)
|
||||||
self._configuration.add_console_argument(ConsoleArgument('', 'build', ['b', 'B'], ''))
|
self._configuration.add_console_argument(ConsoleArgument('', 'build', ['b', 'B'], ''))
|
||||||
self._configuration.add_console_argument(ConsoleArgument('', 'generate', ['g', 'G'], '', console_arguments=[
|
self._configuration.add_console_argument(ConsoleArgument('', 'generate', ['g', 'G'], '', console_arguments=[
|
||||||
|
@ -2,7 +2,6 @@ import time
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from cpl.application.application_abc import ApplicationABC
|
from cpl.application.application_abc import ApplicationABC
|
||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.console.console import Console
|
from cpl.console.console import Console
|
||||||
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
from cpl.dependency_injection.service_provider_abc import ServiceProviderABC
|
||||||
@ -14,8 +13,8 @@ from tests.custom.general.test_service import TestService
|
|||||||
|
|
||||||
class Application(ApplicationABC):
|
class Application(ApplicationABC):
|
||||||
|
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceProviderABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
|
||||||
ApplicationABC.__init__(self, config, runtime, services)
|
ApplicationABC.__init__(self, config, services)
|
||||||
self._logger: Optional[LoggerABC] = None
|
self._logger: Optional[LoggerABC] = None
|
||||||
self._mailer: Optional[EMailClientABC] = None
|
self._mailer: Optional[EMailClientABC] = None
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from cpl.application.application_runtime_abc import ApplicationRuntimeABC
|
|
||||||
from cpl.application.startup_abc import StartupABC
|
from cpl.application.startup_abc import StartupABC
|
||||||
from cpl.configuration.configuration_abc import ConfigurationABC
|
from cpl.configuration.configuration_abc import ConfigurationABC
|
||||||
from cpl.database.context.database_context import DatabaseContext
|
from cpl.database.context.database_context import DatabaseContext
|
||||||
@ -15,11 +14,10 @@ from tests.custom.general.test_service import TestService
|
|||||||
|
|
||||||
class Startup(StartupABC):
|
class Startup(StartupABC):
|
||||||
|
|
||||||
def __init__(self, config: ConfigurationABC, runtime: ApplicationRuntimeABC, services: ServiceCollectionABC):
|
def __init__(self, config: ConfigurationABC, services: ServiceCollectionABC):
|
||||||
StartupABC.__init__(self)
|
StartupABC.__init__(self)
|
||||||
|
|
||||||
self._configuration = config
|
self._configuration = config
|
||||||
self._application_runtime = runtime
|
|
||||||
self._services = services
|
self._services = services
|
||||||
|
|
||||||
def configure_configuration(self) -> ConfigurationABC:
|
def configure_configuration(self) -> ConfigurationABC:
|
||||||
|
Loading…
Reference in New Issue
Block a user