import copy from ddadevops import DevopsBuild from ddadevops import execute from ddadevops import gopass_field_from_path, gopass_password_from_path from version import Version from version_repository import VersionRepository from services import InitReleaseService, PrepareReleaseService, TagAndPushReleaseService from git_repository import GitRepository from release_type import ReleaseType def create_release_mixin_config(config_file, main_branch) -> dict: config = {} config.update( {'ReleaseMixin': {'main_branch': main_branch, 'config_file': config_file}}) return config 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): def __init__(self, project, config): 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.version_repo = VersionRepository(self.config_file) self.git_repo = GitRepository() self.release_version = None self.bump_version = None self.commit_string = None def init_release(self): init_service = InitReleaseService(self.version_repo) self.release_version = init_service.create_release_version(self.commit_string) self.bump_version = self.release_version.create_bump_version() def prepare_release(self): prepare_release_service = PrepareReleaseService(self.version_repo, self.config_file, self.main_branch) if self.release_version is None or self.bump_version is None: raise Exception('prepare_release was called before init_release') # prepare_release_service.run_tests() # not implemented prepare_release_service.write_and_commit_release(self.release_version) prepare_release_service.write_and_commit_bump(self.bump_version) def tag_and_push(self): tag_and_push_release_service = TagAndPushReleaseService(self.git_repo) tag_and_push_release_service.tag_and_push_release(self.release_version)