import json from enum import Enum def init_project(): # validate_values() version = Version('package.json') version.parse() version.increment(ReleaseLevel.MAJOR) print(version.get()) def prepare_release(): pass def release_in_git(): pass class ReleaseLevel(Enum): MAJOR = 0 MINOR = 1 PATCH = 2 SNAPSHOT = 3 class Version(): def __init__(self, config_file_path): self.version = "0.0.0" self.config_file_path = config_file_path def parse(self): if self.config_file_path.split('.')[-1] == 'json': self.__parse_json() def __parse_json(self): with open(self.config_file_path, 'r') as json_file: json_data = json.load(json_file) self.version = json_data['version'] def increment(self, level: ReleaseLevel): if level is ReleaseLevel.SNAPSHOT: if "-SNAPSHOT" not in self.version: self.version = self.version + "-SNAPSHOT" else: # convert array to int # e.g. patch index +1 # convert back to str # join split_versiont = split_version. match level: case ReleaseLevel.PATCH: self.version = self.version.replace("-SNAPSHOT", "") split_version = self.version.split('.') patch_version = int(split_version[ReleaseLevel.PATCH.value]) self.version = ".".join(split_version[:ReleaseLevel.PATCH.value]) + "." + str(patch_version + 1) case ReleaseLevel.MINOR: self.version = self.version.replace("-SNAPSHOT", "") split_version = self.version.split('.') minor_version = int(split_version[ReleaseLevel.MINOR.value]) self.version = ".".join(split_version[:ReleaseLevel.MINOR.value]) + "." + str(minor_version + 1) + ".0" case ReleaseLevel.MAJOR: self.version = self.version.replace("-SNAPSHOT", "") split_version = self.version.split('.') major_version = int(split_version[ReleaseLevel.MAJOR.value]) self.version = "".join(split_version[:ReleaseLevel.MAJOR.value]) + str(major_version + 1) + ".0" + ".0" def get(self) -> str: return self.version