Remove unnecessary configs #70-1

This commit is contained in:
Sven Heidemann 2022-10-20 16:32:05 +02:00
parent 523e019aa0
commit 3b9ef0048e
8 changed files with 168 additions and 1 deletions

View File

@ -1 +1,26 @@
# -*- coding: utf-8 -*-
"""
post-build
~~~~~~~~~~~~~~~~~~~
:copyright: (c)
:license:
"""
__title__ = 'post_build'
__author__ = ''
__license__ = ''
__copyright__ = 'Copyright (c) '
__version__ = '0.0.0'
from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='0', micro='0')

View File

@ -3,14 +3,24 @@ from cpl_core.configuration import ConfigurationABC
from cpl_core.console import Console from cpl_core.console import Console
from cpl_core.dependency_injection import ServiceProviderABC from cpl_core.dependency_injection import ServiceProviderABC
from post_build.service.dependencies import Dependencies
from post_build.service.remove_config import RemoveConfig
class Application(ApplicationABC): class Application(ApplicationABC):
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC): def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
ApplicationABC.__init__(self, config, services) ApplicationABC.__init__(self, config, services)
self._remove_config: RemoveConfig = services.get_service(RemoveConfig)
self._deps: Dependencies = services.get_service(Dependencies)
def configure(self): def configure(self):
pass pass
def main(self): def main(self):
Console.write_line('Hello World') Console.write_line('KDB Post-Build:')
Console.spinner(f'Removing unnecessary configs', self._remove_config.remove)
# Console.spinner(f'Creating requirements file for pip', self._deps.create)

View File

@ -11,5 +11,20 @@
"Filename": "log_$start_time.log", "Filename": "log_$start_time.log",
"ConsoleLogLevel": "ERROR", "ConsoleLogLevel": "ERROR",
"FileLogLevel": "WARN" "FileLogLevel": "WARN"
},
"PostBuild": {
"KeepConfigs": [
"appsettings.json",
"appsettings.staging.json",
"appsettings.production.json",
"apisettings.json",
"apisettings.staging.json",
"apisettings.production.json"
],
"ConfigPaths": [
"bot/config/",
"bot_api/config/"
]
} }
} }

View File

@ -0,0 +1,29 @@
import traceback
from cpl_core.configuration.configuration_model_abc import ConfigurationModelABC
from cpl_core.console import Console
class PostBuildSettings(ConfigurationModelABC):
def __init__(self):
ConfigurationModelABC.__init__(self)
self._keep_config = []
self._config_paths = []
@property
def keep_config(self) -> list[str]:
return self._keep_config
@property
def config_paths(self) -> list[str]:
return self._config_paths
def from_dict(self, settings: dict):
try:
self._keep_config = settings['KeepConfigs']
self._config_paths = settings['ConfigPaths']
except Exception as e:
Console.error(f'[ ERROR ] [ {__name__} ]: Reading error in {type(self).__name__} settings')
Console.error(f'[ EXCEPTION ] [ {__name__} ]: {e} -> {traceback.format_exc()}')

View File

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
"""
post-build
~~~~~~~~~~~~~~~~~~~
:copyright: (c)
:license:
"""
__title__ = 'post_build.service'
__author__ = ''
__license__ = ''
__copyright__ = 'Copyright (c) '
__version__ = '0.0.0'
from collections import namedtuple
# imports
VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major='0', minor='0', micro='0')

View File

@ -0,0 +1,7 @@
class Dependencies:
def __init__(self):
pass
def create(self):
pass

View File

@ -0,0 +1,39 @@
import os
from cpl_cli.configuration import ProjectSettings, BuildSettings, WorkspaceSettings
from cpl_core.console import Console
from cpl_core.environment import ApplicationEnvironmentABC
from post_build.post_build_settings import PostBuildSettings
class RemoveConfig:
def __init__(self, env: ApplicationEnvironmentABC, ws: WorkspaceSettings, project: ProjectSettings, build: BuildSettings, post_build: PostBuildSettings,):
self._env = env
self._workspace = ws
self._project = project
self._build = build
self._post_build = post_build
def remove(self):
dist_path = os.path.abspath(os.path.join(
self._env.working_directory,
os.path.dirname(self._workspace.projects[self._project.name]),
self._build.output_path,
self._project.name,
'build'
))
for cfg_path in self._post_build.config_paths:
config_path = os.path.join(
dist_path,
cfg_path
)
for r, d, f in os.walk(config_path):
for file in f:
if file in self._post_build.keep_config:
continue
os.remove(os.path.abspath(os.path.join(config_path, file)))

View File

@ -1,8 +1,15 @@
import os.path
from cpl_cli.configuration import WorkspaceSettings, ProjectSettings
from cpl_core.application import StartupABC from cpl_core.application import StartupABC
from cpl_core.configuration import ConfigurationABC from cpl_core.configuration import ConfigurationABC
from cpl_core.console import Console
from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC from cpl_core.dependency_injection import ServiceProviderABC, ServiceCollectionABC
from cpl_core.environment import ApplicationEnvironment from cpl_core.environment import ApplicationEnvironment
from post_build.service.dependencies import Dependencies
from post_build.service.remove_config import RemoveConfig
class Startup(StartupABC): class Startup(StartupABC):
@ -10,7 +17,16 @@ class Startup(StartupABC):
StartupABC.__init__(self) StartupABC.__init__(self)
def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC: def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC:
configuration.add_json_file(f'appsettings.json', optional=False, output=False)
environment.set_working_directory(os.path.abspath(os.path.join(environment.working_directory, '../../')))
configuration.add_json_file(f'cpl-workspace.json', optional=False, output=False)
ws: WorkspaceSettings = configuration.get_configuration(WorkspaceSettings)
configuration.add_json_file(ws.projects[ws.default_project], optional=False, output=False)
return configuration return configuration
def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC: def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC:
services.add_transient(RemoveConfig)
services.add_transient(Dependencies)
return services.build_service_provider() return services.build_service_provider()