Moved folders #405

This commit is contained in:
2023-10-13 17:10:00 +02:00
parent eb32bec43c
commit f435d3dd48
807 changed files with 3801 additions and 1297 deletions

View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
"""
post-build KDB - post build
~~~~~~~~~~~~~~~~~~~
Tool project to clean build project files
:copyright: (c) 2022 sh-edraft.de
:license: MIT, see LICENSE for more details.
"""
__title__ = "post_build"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "1.0.0"
from collections import namedtuple
# imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="1", minor="0", micro="0")

View File

@@ -0,0 +1,23 @@
from cpl_core.application import ApplicationABC
from cpl_core.configuration import ConfigurationABC
from cpl_core.console import Console
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):
def __init__(self, config: ConfigurationABC, services: ServiceProviderABC):
ApplicationABC.__init__(self, config, services)
self._remove_config: RemoveConfig = services.get_service(RemoveConfig)
self._deps: Dependencies = services.get_service(Dependencies)
def configure(self):
pass
def main(self):
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

@@ -0,0 +1,33 @@
{
"TimeFormatSettings": {
"DateFormat": "%Y-%m-%d",
"TimeFormat": "%H:%M:%S",
"DateTimeFormat": "%Y-%m-%d %H:%M:%S.%f",
"DateTimeLogFormat": "%Y-%m-%d_%H-%M-%S"
},
"LoggingSettings": {
"Path": "logs/",
"Filename": "log_$start_time.log",
"ConsoleLogLevel": "ERROR",
"FileLogLevel": "WARN"
},
"PostBuild": {
"KeepConfigs": [
"appsettings.json",
"appsettings.development.json",
"appsettings.staging.json",
"appsettings.production.json",
"feature-flags.json",
"apisettings.json",
"apisettings.development.json",
"apisettings.staging.json",
"apisettings.production.json"
],
"ConfigPaths": [
"bot/config/",
"bot_api/config/"
]
}
}

View File

@@ -0,0 +1,14 @@
from cpl_core.application import ApplicationBuilder
from post_build.application import Application
from post_build.startup import Startup
def main():
app_builder = ApplicationBuilder(Application)
app_builder.use_startup(Startup)
app_builder.build().run()
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,44 @@
{
"ProjectSettings": {
"Name": "post-build",
"Version": {
"Major": "1",
"Minor": "2",
"Micro": "0"
},
"Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de",
"Description": "KDB - post build",
"LongDescription": "Tool project to clean build project files",
"URL": "https://www.sh-edraft.de",
"CopyrightDate": "2022",
"CopyrightName": "sh-edraft.de",
"LicenseName": "MIT",
"LicenseDescription": "MIT, see LICENSE for more details.",
"Dependencies": [
"cpl-core==2022.12.0"
],
"DevDependencies": [
"cpl-cli==2022.12.0"
],
"PythonVersion": ">=3.10.4",
"PythonPath": {},
"Classifiers": []
},
"BuildSettings": {
"ProjectType": "console",
"SourcePath": "",
"OutputPath": "../../dist",
"Main": "post_build.main",
"EntryPoint": "post-build",
"IncludePackageData": false,
"Included": [],
"Excluded": [
"*/__pycache__",
"*/logs",
"*/tests"
],
"PackageData": {},
"ProjectReferences": []
}
}

View File

@@ -0,0 +1,32 @@
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 KDB - post build
~~~~~~~~~~~~~~~~~~~
Tool project to clean build project files
:copyright: (c) 2022 sh-edraft.de
:license: MIT, see LICENSE for more details.
"""
__title__ = "post_build.service"
__author__ = "Sven Heidemann"
__license__ = "MIT"
__copyright__ = "Copyright (c) 2022 sh-edraft.de"
__version__ = "1.0.0"
from collections import namedtuple
# imports
VersionInfo = namedtuple("VersionInfo", "major minor micro")
version_info = VersionInfo(major="1", minor="0", micro="0")

View File

@@ -0,0 +1,67 @@
import os
from cpl_cli.configuration import WorkspaceSettings, ProjectSettings, BuildSettings
from cpl_core.configuration import ConfigurationABC
from cpl_core.console import Console
from cpl_core.environment import ApplicationEnvironmentABC
from post_build.post_build_settings import PostBuildSettings
class Dependencies:
def __init__(
self,
config: ConfigurationABC,
env: ApplicationEnvironmentABC,
ws: WorkspaceSettings,
project: ProjectSettings,
build: BuildSettings,
post_build: PostBuildSettings,
):
self._config = config
self._env = env
self._workspace = ws
self._project = project
self._build = build
self._post_build = post_build
self._dependencies = {}
def _add_dependencies(self, deps: list[str]):
for d in deps:
d_name = d
if ">=" in d:
d_name = d.split(">=")[0]
if "<=" in d:
d_name = d.split("<=")[0]
if "==" in d:
d_name = d.split("==")[0]
if d_name in self._dependencies:
continue
self._dependencies[d_name] = d
def create(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 project in self._workspace.projects:
project_file = os.path.join(
self._env.working_directory, self._workspace.projects[project]
)
self._config.add_json_file(project_file, output=False, optional=False)
project: ProjectSettings = self._config.get_configuration(ProjectSettings)
self._add_dependencies(project.dependencies)
with open(f"{dist_path}/requirements.txt", "w+", encoding="utf-8") as f:
for dependency in self._dependencies:
f.write(f"{self._dependencies[dependency]}\n")
f.close()

View File

@@ -0,0 +1,43 @@
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

@@ -0,0 +1,38 @@
import os.path
from cpl_cli.configuration import WorkspaceSettings
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 post_build.service.dependencies import Dependencies
from post_build.service.remove_config import RemoveConfig
class Startup(StartupABC):
def __init__(self):
StartupABC.__init__(self)
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
def configure_services(
self, services: ServiceCollectionABC, environment: ApplicationEnvironment
) -> ServiceProviderABC:
services.add_transient(RemoveConfig)
services.add_transient(Dependencies)
return services.build_service_provider()