diff --git a/src/codewars/kata_version_mamanger.py b/src/codewars/kata_version_mamanger.py index 22d85a0..e32722e 100644 --- a/src/codewars/kata_version_mamanger.py +++ b/src/codewars/kata_version_mamanger.py @@ -1,31 +1,47 @@ class VersionManager: - def __init__(self, version="0.0.1"): - version = version.split(".")[:3] - try: - for val in version: - assert val.isdecimal(), "Error occured while parsing version!" - except AssertionError as error: - print(error) + def __init__(self, version=None): + if not version: + version = "0.0.1" - self.version = ".".join(version) - self.history = [self.version] + parts = version.split(".")[:3] - def major(self) -> None: - pass + if not all(p.isdecimal() for p in parts): + raise ValueError("Error occured while parsing version!") - def minor(self) -> None: - pass + nums = [int(p) for p in parts] - def path(self) -> None: - pass + while len(nums) < 3: + nums.append(0) - def rollback(self) -> None: - pass + self.major_v, self.minor_v, self.patch_v = nums + self.history = [] - def release(self) -> str: - return f"{self.version}" + def _save(self): + self.history.append((self.major_v, self.minor_v, self.patch_v)) + def major(self): + self._save() + self.major_v += 1 + self.minor_v = 0 + self.patch_v = 0 + return self -test = VersionManager("1.1") -print(test.version) -print(test.history) + def minor(self): + self._save() + self.minor_v += 1 + self.patch_v = 0 + return self + + def patch(self): + self._save() + self.patch_v += 1 + return self + + def rollback(self): + if not self.history: + raise Exception("Cannot rollback!") + self.major_v, self.minor_v, self.patch_v = self.history.pop() + return self + + def release(self): + return f"{self.major_v}.{self.minor_v}.{self.patch_v}" diff --git a/tests/codewars/test_version_manager.py b/tests/codewars/test_version_manager.py index e69de29..fb9c76b 100644 --- a/tests/codewars/test_version_manager.py +++ b/tests/codewars/test_version_manager.py @@ -0,0 +1,7 @@ +from src.codewars.kata_version_mamanger import VersionManager + + +def test_lamp(): + v = VersionManager("1.1.1") + + assert v.release() == "1.1.1"