mob
This commit is contained in:
parent
c6ef13ca7c
commit
975de636ed
5 changed files with 79 additions and 79 deletions
27
domain.py
27
domain.py
|
@ -1,5 +1,11 @@
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class Config():
|
||||||
|
def __init__(self, main_branch):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ReleaseType(Enum):
|
class ReleaseType(Enum):
|
||||||
MAJOR = 0
|
MAJOR = 0
|
||||||
MINOR = 1
|
MINOR = 1
|
||||||
|
@ -10,7 +16,8 @@ class ReleaseType(Enum):
|
||||||
|
|
||||||
class Version():
|
class Version():
|
||||||
|
|
||||||
def __init__(self, version_list: list):
|
def __init__(self, id: Path, version_list: list):
|
||||||
|
self.id = id
|
||||||
self.version_list = version_list
|
self.version_list = version_list
|
||||||
self.version_string = None
|
self.version_string = None
|
||||||
self.is_snapshot = None
|
self.is_snapshot = None
|
||||||
|
@ -55,6 +62,22 @@ class Version():
|
||||||
|
|
||||||
|
|
||||||
class Release():
|
class Release():
|
||||||
def __init__(self, release_type: ReleaseType, version: Version):
|
def __init__(self, release_type: ReleaseType, version: Version, current_branch: str):
|
||||||
self.release_type = release_type
|
self.release_type = release_type
|
||||||
self.version = version
|
self.version = version
|
||||||
|
self.current_branch = current_branch
|
||||||
|
|
||||||
|
def release_version(self):
|
||||||
|
return self.version.create_release_version(self.release_type)
|
||||||
|
|
||||||
|
def bump_version(self):
|
||||||
|
return self.version.create_bump_version()
|
||||||
|
|
||||||
|
def validate(self, main_branch):
|
||||||
|
result = []
|
||||||
|
if self.release_type is not None and main_branch != self.current_branch:
|
||||||
|
result.append(f"Releases are allowed only on {main_branch}")
|
||||||
|
return result
|
||||||
|
|
||||||
|
def is_valid(self, main_branch):
|
||||||
|
return self.validate(main_branch).count < 1
|
||||||
|
|
|
@ -54,5 +54,5 @@ class ReleaseRepository():
|
||||||
self.version_repository = version_repository
|
self.version_repository = version_repository
|
||||||
self.release_type_repository = release_type_repository
|
self.release_type_repository = release_type_repository
|
||||||
|
|
||||||
def get_current_release(self) -> Release:
|
def get_release(self) -> Release:
|
||||||
return Release(self.release_type_repository.get_release_type(), self.version_repository.get_version())
|
return Release(self.release_type_repository.get_release_type(), self.version_repository.get_version())
|
||||||
|
|
37
services.py
37
services.py
|
@ -1,43 +1,22 @@
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from infrastructure import VersionRepository, GitRepository
|
from infrastructure import ReleaseRepository
|
||||||
from domain import Version, ReleaseType
|
from domain import Version, ReleaseType
|
||||||
|
|
||||||
|
|
||||||
|
# Todo: can be removed
|
||||||
class InitReleaseService():
|
class InitReleaseService():
|
||||||
|
|
||||||
def __init__(self, version_repo: VersionRepository):
|
def __init__(self, release_repo: ReleaseRepository):
|
||||||
if version_repo is None:
|
self.release_repo = release_repo
|
||||||
raise Exception('VersionRepo was not created. Did you run create_release_version()?')
|
|
||||||
self.version_repo = version_repo
|
|
||||||
|
|
||||||
def __calculate_release_type(self, commit_string = None):
|
|
||||||
if commit_string is None:
|
|
||||||
return GitRepository().get_release_type_from_latest_commit()
|
|
||||||
else:
|
|
||||||
return GitRepository.create_from_commit_string(commit_string).get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
def get_version(self):
|
def get_version(self):
|
||||||
return self.version_repo.get_version()
|
return self.release_repo.get_release().version
|
||||||
|
|
||||||
def create_release_version(self, commit_string = None):
|
|
||||||
release_type = self.__calculate_release_type(commit_string)
|
|
||||||
version = self.get_version().create_release_version(release_type)
|
|
||||||
return version
|
|
||||||
|
|
||||||
def create_bump_version(self):
|
|
||||||
version = self.get_version().create_bump_version()
|
|
||||||
return version
|
|
||||||
|
|
||||||
|
|
||||||
class PrepareReleaseService():
|
class PrepareReleaseService():
|
||||||
|
|
||||||
def __init__(self, version_repository: VersionRepository, git_repository: GitRepository, config_file: Path, main_branch: str):
|
def __init__(self, release_repo: ReleaseRepository):
|
||||||
self.version_repository = version_repository
|
self.release_repo = release_repo
|
||||||
self.git_repository = git_repository
|
|
||||||
self.main_branch = main_branch
|
|
||||||
self.config_file = config_file
|
|
||||||
|
|
||||||
def run_tests(self): # maybe auto?
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
def __write_and_commit_version(self, version: Version, commit_message: str):
|
def __write_and_commit_version(self, version: Version, commit_message: str):
|
||||||
if self.main_branch != self.git_repository.get_current_branch():
|
if self.main_branch != self.git_repository.get_current_branch():
|
||||||
|
|
|
@ -29,49 +29,6 @@ class TestGitApi(GitApi):
|
||||||
return self.commit_string
|
return self.commit_string
|
||||||
|
|
||||||
|
|
||||||
def test_git_repository():
|
|
||||||
|
|
||||||
# init
|
|
||||||
commit_string = "Major bla"
|
|
||||||
repo = GitRepository.create_from_commit_string(commit_string)
|
|
||||||
release_type = repo.get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
# test
|
|
||||||
assert release_type == ReleaseType.MAJOR
|
|
||||||
|
|
||||||
# init
|
|
||||||
commit_string = "MINOR bla"
|
|
||||||
repo = GitRepository.create_from_commit_string(commit_string)
|
|
||||||
release_type = repo.get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
# test
|
|
||||||
assert release_type == ReleaseType.MINOR
|
|
||||||
|
|
||||||
# init
|
|
||||||
commit_string = "PATCH bla"
|
|
||||||
repo = GitRepository.create_from_commit_string(commit_string)
|
|
||||||
release_type = repo.get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
# test
|
|
||||||
assert release_type == ReleaseType.PATCH
|
|
||||||
|
|
||||||
# init
|
|
||||||
commit_string = "SNAPSHOT bla"
|
|
||||||
repo = GitRepository.create_from_commit_string(commit_string)
|
|
||||||
release_type = repo.get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
# test
|
|
||||||
assert release_type == ReleaseType.SNAPSHOT
|
|
||||||
|
|
||||||
# init
|
|
||||||
commit_string = "bla"
|
|
||||||
repo = GitRepository.create_from_commit_string(commit_string)
|
|
||||||
release_type = repo.get_release_type_from_latest_commit()
|
|
||||||
|
|
||||||
# test
|
|
||||||
assert release_type == None
|
|
||||||
|
|
||||||
|
|
||||||
def test_gradle(tmp_path):
|
def test_gradle(tmp_path):
|
||||||
# init
|
# init
|
||||||
file_name = 'config.gradle'
|
file_name = 'config.gradle'
|
||||||
|
@ -159,12 +116,32 @@ def test_release_repository(tmp_path):
|
||||||
|
|
||||||
# test
|
# test
|
||||||
sut = ReleaseRepository(VersionRepository(f), ReleaseTypeRepository(TestGitApi('MINOR test')))
|
sut = ReleaseRepository(VersionRepository(f), ReleaseTypeRepository(TestGitApi('MINOR test')))
|
||||||
release = sut.get_current_release()
|
release = sut.get_release()
|
||||||
|
|
||||||
|
assert release is not None
|
||||||
|
|
||||||
assert release.version is not None
|
|
||||||
|
|
||||||
def test_release_type_repository():
|
def test_release_type_repository():
|
||||||
sut = ReleaseTypeRepository(TestGitApi('MINOR test'))
|
sut = ReleaseTypeRepository(TestGitApi('MINOR test'))
|
||||||
release_type = sut.get_release_type()
|
release_type = sut.get_release_type()
|
||||||
|
|
||||||
assert release_type is ReleaseType.MINOR
|
assert release_type is ReleaseType.MINOR
|
||||||
|
|
||||||
|
sut = ReleaseTypeRepository(TestGitApi('MINOR bla'))
|
||||||
|
release_type = sut.get_release_type()
|
||||||
|
assert release_type is ReleaseType.MINOR
|
||||||
|
|
||||||
|
sut = ReleaseTypeRepository(TestGitApi('Major bla'))
|
||||||
|
release_type = sut.get_release_type()
|
||||||
|
assert release_type == ReleaseType.MAJOR
|
||||||
|
|
||||||
|
sut = ReleaseTypeRepository(TestGitApi('PATCH bla'))
|
||||||
|
release_type = sut.get_release_type()
|
||||||
|
assert release_type == ReleaseType.PATCH
|
||||||
|
|
||||||
|
sut = ReleaseTypeRepository(TestGitApi('SNAPSHOT bla'))
|
||||||
|
release_type = sut.get_release_type()
|
||||||
|
assert release_type == ReleaseType.SNAPSHOT
|
||||||
|
|
||||||
|
sut = ReleaseTypeRepository(TestGitApi('bla'))
|
||||||
|
release_type = sut.get_release_type()
|
||||||
|
assert release_type == None
|
||||||
|
|
21
test/test_infrastructure_api.py
Normal file
21
test/test_infrastructure_api.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# getting the name of the directory
|
||||||
|
# where the this file is present.
|
||||||
|
current = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
# Getting the parent directory name
|
||||||
|
# where the current directory is present.
|
||||||
|
parent = os.path.dirname(current)
|
||||||
|
|
||||||
|
# adding the parent directory to
|
||||||
|
# the sys.path.
|
||||||
|
sys.path.append(parent)
|
||||||
|
|
||||||
|
# now we can import the module in the parent
|
||||||
|
# directory.
|
||||||
|
|
||||||
|
from infrastructure_api import GitApi
|
||||||
|
|
Loading…
Reference in a new issue