You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.4 KiB
Python

from pathlib import Path
from infrastructure import VersionRepository, ReleaseRepository, GitApi
from domain import Version, ReleaseType, Release
class PrepareReleaseService():
1 year ago
def __init__(self, release_repo: ReleaseRepository):
self.release_repo = release_repo
self.release = release_repo.get_release()
self.git_api = GitApi()
def __write_and_commit_version(self, version: Version, commit_message: str):
self.release.validate(self.release_repo.main_branch)
self.release_repo.version_repository.write_file(version.get_version_string())
self.git_api.add_file(self.release_repo.version_repository.file)
self.git_api.commit(commit_message)
def write_and_commit_release(self):
self.__write_and_commit_version(self.release.release_version(), commit_message=f'Release {self.release.release_version().get_version_string()}')
def write_and_commit_bump(self):
self.__write_and_commit_version(self.release.bump_version(), commit_message=f'Version bump')
class TagAndPushReleaseService():
def __init__(self, git_api: GitApi):
self.git_api = git_api
def tag_and_push_release(self, release: Release):
annotation = 'v' + release.version.get_version_string()
message = 'Release ' + annotation
self.git_api.tag_annotated(annotation, message, 1)
# self.git_api.push()