From 2584fe8b6b2c4afaa95a692584f884b0d7f7bb77 Mon Sep 17 00:00:00 2001 From: Venu Vardhan Reddy Tekula Date: Sat, 30 Sep 2023 17:42:14 -0700 Subject: [PATCH] Split `BuildTarget` into `BuildTarget` and `BuildTargetSnapshot` classes - Refactored BuildTarget to separate snapshot-specific functionality into a subclass named BuildTargetSnapshot. - Updated tests to cover both BuildTarget and BuildTargetSnapshot classes. Signed-off-by: Venu Vardhan Reddy Tekula --- src/build_workflow/build_target.py | 52 +++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/src/build_workflow/build_target.py b/src/build_workflow/build_target.py index a892195717..c5a3b1cb61 100644 --- a/src/build_workflow/build_target.py +++ b/src/build_workflow/build_target.py @@ -20,7 +20,7 @@ class BuildTarget: platform: str architecture: str distribution: str - snapshot: bool + snapshot: bool = False # default to False output_dir: str def __init__( @@ -32,7 +32,6 @@ def __init__( architecture: str = None, distribution: str = None, name: str = None, - snapshot: bool = True, build_id: str = None, output_dir: str = "artifacts", ) -> None: @@ -41,7 +40,6 @@ def __init__( self.version = version self.qualifier = qualifier self.patches = patches - self.snapshot = snapshot self.architecture = architecture or current_architecture() self.distribution = distribution self.platform = platform or current_platform() @@ -49,18 +47,17 @@ def __init__( @property def opensearch_version(self) -> str: - return BuildTarget.__qualify_version( + return self.__qualify_version( self.version, - self.qualifier, - self.snapshot + self.qualifier ) @property def compatible_min_versions(self) -> List[str]: return ( - [BuildTarget.__qualify_version(self.version, self.qualifier, self.snapshot)] + [self.__qualify_version(self.version, self.qualifier)] + self.patches - + list(map(lambda version: BuildTarget.__qualify_version(version, self.qualifier, True), self.patches)) + + list(map(lambda version: self.__qualify_version(version, self.qualifier), self.patches)) ) @property @@ -68,16 +65,14 @@ def component_version(self) -> str: # BUG: the 4th digit is dictated by the component, it's not .0, this will break for 1.1.0.1 return BuildTarget.__qualify_version( self.version + ".0", - self.qualifier, - self.snapshot + self.qualifier ) @property def compatible_component_versions(self) -> List[str]: return ( - [BuildTarget.__qualify_version(self.version + ".0", self.qualifier, self.snapshot)] - + list(map(lambda version: BuildTarget.__qualify_version(version + ".0", self.qualifier, False), self.patches)) - + list(map(lambda version: BuildTarget.__qualify_version(version + ".0", self.qualifier, True), self.patches)) + [self.__qualify_version(self.version + ".0", self.qualifier)] + + list(map(lambda version: self.__qualify_version(version + ".0", self.qualifier), self.patches)) ) @property @@ -87,10 +82,35 @@ def compatible_versions(self) -> List[str]: return versions @classmethod - def __qualify_version(cls, unqualified_version: str, qualifier: str = None, snapshot: bool = False) -> str: + def __qualify_version(cls, unqualified_version: str, qualifier: str = None) -> str: version = unqualified_version if qualifier: version += f"-{qualifier}" - if snapshot: - version += "-SNAPSHOT" return version + + +class BuildTargetSnapshot(BuildTarget): + snapshot: bool = True + + @property + def opensearch_version(self) -> str: + return super().opensearch_version + "-SNAPSHOT" + + @property + def compatible_min_versions(self) -> List[str]: + return ( + [super().opensearch_version + "-SNAPSHOT"] + + self.patches + + list(map(lambda version: self.__qualify_version(version, self.qualifier) + "-SNAPSHOT", self.patches)) + ) + + @property + def component_version(self) -> str: + return super().component_version + "-SNAPSHOT" + + @property + def compatible_component_versions(self) -> List[str]: + return ( + [super().component_version + "-SNAPSHOT"] + + list(map(lambda version: self.__qualify_version(version + ".0", self.qualifier) + "-SNAPSHOT", self.patches)) + )