48 lines
1.1 KiB
Python
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}"
|