# TODO: jem, zam - 2023_04_14: mv file one dir up from ..devops_build import DevopsBuild from .infrastructure import ReleaseRepository, ReleaseTypeRepository, VersionRepository from .infrastructure_api import GitApi, EnvironmentApi from .services import PrepareReleaseService, TagAndPushReleaseService from .domain import EnvironmentKeys # TODO: jem, zam - 2023_04_14: use of config fkts is deprecated - use domain object instead (see: devops_image_build.py) def create_release_mixin_config(config_file, main_branch) -> dict: config = {} config.update( {'ReleaseMixin': {'main_branch': main_branch, 'config_file': config_file}}) return config # TODO: jem, zam - 2023_04_14: use of config fkts is deprecated - use domain object instead (see: devops_image_build.py) def add_versions(config, release_version, bump_version) -> dict: config['ReleaseMixin'].update( {'release_version': release_version, 'bump_version': bump_version}) return config class ReleaseMixin(DevopsBuild): # TODO: jem, zam - 2023_04_14: handover config as domain object def __init__(self, project, config): # todo: create services in init, dont expose repos etc in api super().__init__(project, config) release_mixin_config = config['ReleaseMixin'] self.config_file = release_mixin_config['config_file'] self.main_branch = release_mixin_config['main_branch'] self.git_api = GitApi() self.environment_api = EnvironmentApi() self.env_key = EnvironmentKeys.DDADEVOPS_RELEASE_TYPE.name self.environment_val_set = self.environment_api.get(self.env_key) is not "" and self.environment_api.get(self.env_key) is not None if (self.environment_val_set): self.release_type_repo = ReleaseTypeRepository.from_environment(self.environment_api) else: self.release_type_repo = ReleaseTypeRepository.from_git(self.git_api) self.version_repo = VersionRepository(self.config_file) self.release_repo = ReleaseRepository(self.version_repo, self.release_type_repo, self.main_branch) def prepare_release(self): # TODO: jem, zam - 2023_04_14: instantiate service on object creation? prepare_release_service = PrepareReleaseService(self.release_repo) prepare_release_service.write_and_commit_release() prepare_release_service.write_and_commit_bump() def tag_and_push_release(self): # TODO: jem, zam - 2023_04_14: instantiate service on object creation? tag_and_push_release_service = TagAndPushReleaseService(self.git_api) tag_and_push_release_service.tag_release(self.release_repo.get_release()) tag_and_push_release_service.push_release()