|
|
|
@ -6,18 +6,21 @@ from .common import (
|
|
|
|
|
Devops,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ReleaseType(Enum):
|
|
|
|
|
MAJOR = 0
|
|
|
|
|
MINOR = 1
|
|
|
|
|
PATCH = 2
|
|
|
|
|
SNAPSHOT = 3
|
|
|
|
|
BUMP = None
|
|
|
|
|
NONE = 15
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EnvironmentKeys(Enum):
|
|
|
|
|
DDADEVOPS_RELEASE_TYPE = 0
|
|
|
|
|
|
|
|
|
|
class Version():
|
|
|
|
|
|
|
|
|
|
class Version(Validateable):
|
|
|
|
|
def __init__(self, path: Path, version_list: list):
|
|
|
|
|
self.path = path
|
|
|
|
|
self.version_list = version_list
|
|
|
|
@ -62,11 +65,25 @@ class Version():
|
|
|
|
|
bump_version.increment(ReleaseType.BUMP)
|
|
|
|
|
return bump_version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ReleaseContext(Validateable):
|
|
|
|
|
def __init__(self, release_type: ReleaseType | None, version: Version, current_branch: str):
|
|
|
|
|
self.release_type = release_type
|
|
|
|
|
self.version = version
|
|
|
|
|
self.current_branch = current_branch
|
|
|
|
|
def __init__(
|
|
|
|
|
self,
|
|
|
|
|
input: dict,
|
|
|
|
|
):
|
|
|
|
|
self.release_type = ReleaseType[input.get("release_type", "SNAPSHOT")]
|
|
|
|
|
self.release_current_version = input.get("release_current_version")
|
|
|
|
|
self.release_current_branch = input.get("release_current_branch")
|
|
|
|
|
self.version = self.__version_from_str__()
|
|
|
|
|
|
|
|
|
|
# TODO: mv version parsing to version
|
|
|
|
|
def __version_from_str__(self):
|
|
|
|
|
if not self.release_current_version:
|
|
|
|
|
return
|
|
|
|
|
version_parsed = []
|
|
|
|
|
for x in self.release_current_version.split("."):
|
|
|
|
|
version_parsed += [int(x)]
|
|
|
|
|
return Version("unused", version_parsed)
|
|
|
|
|
|
|
|
|
|
def release_version(self) -> Version:
|
|
|
|
|
return self.version.create_release_version(self.release_type)
|
|
|
|
@ -77,30 +94,32 @@ class ReleaseContext(Validateable):
|
|
|
|
|
def validate(self):
|
|
|
|
|
result = []
|
|
|
|
|
result += self.__validate_is_not_empty__("release_type")
|
|
|
|
|
result += self.__validate_is_not_empty__("version")
|
|
|
|
|
result += self.__validate_is_not_empty__("current_branch")
|
|
|
|
|
result += self.__validate_is_not_empty__("release_current_version")
|
|
|
|
|
result += self.__validate_is_not_empty__("release_current_branch")
|
|
|
|
|
if self.version:
|
|
|
|
|
result += self.version.validate()
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
def validate_branch(self, main_branch: str):
|
|
|
|
|
result = []
|
|
|
|
|
if self.release_type is not None and main_branch != self.current_branch:
|
|
|
|
|
if (
|
|
|
|
|
self.release_type is not None
|
|
|
|
|
and self.release_type != ReleaseType.NONE
|
|
|
|
|
and main_branch != self.release_current_branch
|
|
|
|
|
):
|
|
|
|
|
result.append(f"Releases are allowed only on {main_branch}")
|
|
|
|
|
return result
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Release(Validateable):
|
|
|
|
|
def __init__(
|
|
|
|
|
self,
|
|
|
|
|
devops: Devops,
|
|
|
|
|
main_branch: str,
|
|
|
|
|
config_file: str,
|
|
|
|
|
input: dict,
|
|
|
|
|
release_context: ReleaseContext,
|
|
|
|
|
):
|
|
|
|
|
self.devops = devops
|
|
|
|
|
self.main_branch = main_branch
|
|
|
|
|
self.config_file = config_file
|
|
|
|
|
self.release_context: ReleaseContext | None = None
|
|
|
|
|
|
|
|
|
|
def set_release_context(self, set_release_context: ReleaseContext):
|
|
|
|
|
self.release_context = set_release_context
|
|
|
|
|
self.release_main_branch = input.get("release_main_branch", "main")
|
|
|
|
|
self.release_config_file = input.get("release_config_file", "project.clj")
|
|
|
|
|
self.release_context = release_context
|
|
|
|
|
|
|
|
|
|
def release_version(self):
|
|
|
|
|
return self.release_context.release_version()
|
|
|
|
@ -108,14 +127,12 @@ class Release(Validateable):
|
|
|
|
|
def bump_version(self):
|
|
|
|
|
return self.release_context.bump_version()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def validate(self):
|
|
|
|
|
result = []
|
|
|
|
|
result += self.__validate_is_not_empty__("main_branch")
|
|
|
|
|
result += self.__validate_is_not_empty__("config_file")
|
|
|
|
|
result += self.__validate_is_not_empty__("release_main_branch")
|
|
|
|
|
result += self.__validate_is_not_empty__("release_config_file")
|
|
|
|
|
result += self.__validate_is_not_empty__("release_context")
|
|
|
|
|
if self.release_context is not None:
|
|
|
|
|
result += self.release_context.validate()
|
|
|
|
|
result += self.release_context.validate_branch(self.main_branch)
|
|
|
|
|
result += self.release_context.validate_branch(self.release_main_branch)
|
|
|
|
|
return result
|
|
|
|
|
|