Fix CI: Refactor None like logic

We now do check wether from_git or from_env was
called and then take a bool based decision on which
method to call. Also: Type declarations and specific errors.
This commit is contained in:
erik 2023-04-19 15:29:59 +02:00
parent 420030fa0a
commit 8e8ad034a7

View file

@ -1,3 +1,4 @@
from typing import Optional
from src.main.python.ddadevops.domain import Release, Version, ReleaseType, EnvironmentKeys from src.main.python.ddadevops.domain import Release, Version, ReleaseType, EnvironmentKeys
from src.main.python.ddadevops.infrastructure.release_mixin import FileHandler, GitApi, EnvironmentApi from src.main.python.ddadevops.infrastructure.release_mixin import FileHandler, GitApi, EnvironmentApi
@ -32,19 +33,23 @@ class VersionRepository():
return version return version
class ReleaseTypeRepository(): class ReleaseTypeRepository():
def __init__(self, git_api: GitApi, environment_api: EnvironmentApi): def __init__(self, git_api: GitApi = GitApi(), environment_api: EnvironmentApi = EnvironmentApi()):
self.git_api = git_api self.git_api: GitApi = git_api
self.environment_api = environment_api self.environment_api: EnvironmentApi = environment_api
self.get_from_git: bool = False
self.get_from_env: bool = False
@classmethod @classmethod
def from_git(cls, git_api: GitApi): def from_git(cls, git_api: GitApi):
environment_api = None releaseTypeRepo = cls(git_api= git_api)
return cls(git_api, environment_api) releaseTypeRepo.get_from_git = True
return releaseTypeRepo
@classmethod @classmethod
def from_environment(cls, environment_api: EnvironmentApi): def from_environment(cls, environment_api: EnvironmentApi):
git_api = None releaseTypeRepo = cls(environment_api=environment_api)
return cls(git_api, environment_api) releaseTypeRepo.get_from_env = True
return releaseTypeRepo
def __get_release_type_git(self) -> ReleaseType | None: def __get_release_type_git(self) -> ReleaseType | None:
latest_commit = self.git_api.get_latest_commit() latest_commit = self.git_api.get_latest_commit()
@ -64,7 +69,7 @@ class ReleaseTypeRepository():
release_name = self.environment_api.get(EnvironmentKeys.DDADEVOPS_RELEASE_TYPE.name) release_name = self.environment_api.get(EnvironmentKeys.DDADEVOPS_RELEASE_TYPE.name)
if release_name is None: if release_name is None:
return None raise ValueError("Release Name not found. Is the Environment correctly configured?")
elif ReleaseType.MAJOR.name in release_name.upper(): elif ReleaseType.MAJOR.name in release_name.upper():
return ReleaseType.MAJOR return ReleaseType.MAJOR
elif ReleaseType.MINOR.name in release_name.upper(): elif ReleaseType.MINOR.name in release_name.upper():
@ -77,12 +82,12 @@ class ReleaseTypeRepository():
return None return None
def get_release_type(self) -> ReleaseType | None: def get_release_type(self) -> ReleaseType | None:
if self.git_api is not None: if self.get_from_git:
return self.__get_release_type_git() return self.__get_release_type_git()
elif self.environment_api is not None: elif self.get_from_env:
return self.__get_release_type_environment() return self.__get_release_type_environment()
else: else:
raise Exception('No valid api passed to ReleaseTypeRepository') raise ValueError('No valid api passed to ReleaseTypeRepository')
class ReleaseRepository(): class ReleaseRepository():
def __init__(self, version_repository: VersionRepository, release_type_repository: ReleaseTypeRepository, main_branch: str): def __init__(self, version_repository: VersionRepository, release_type_repository: ReleaseTypeRepository, main_branch: str):