ppe2/src/codewars/kata_version_mamanger.py

48 lines
1.1 KiB
Python

class VersionManager:
def __init__(self, version=None):
if not version:
version = "0.0.1"
parts = version.split(".")[:3]
if not all(p.isdecimal() for p in parts):
raise ValueError("Error occured while parsing version!")
nums = [int(p) for p in parts]
while len(nums) < 3:
nums.append(0)
self.major_v, self.minor_v, self.patch_v = nums
self.history = []
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
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}"