| import argparse | |
| from typing import Tuple | |
| def get_next_version(release_type) -> Tuple[Tuple[int, int, int], str, str]: | |
| current_ver = find_version("fairseq/version.txt") | |
| version_list = [int(x) for x in current_ver.strip("'").split(".")] | |
| major, minor, patch = version_list[0], version_list[1], version_list[2] | |
| if release_type == "patch": | |
| patch += 1 | |
| elif release_type == "minor": | |
| minor += 1 | |
| patch = 0 | |
| elif release_type == "major": | |
| major += 1 | |
| minor = patch = 0 | |
| else: | |
| raise ValueError( | |
| "Incorrect release type specified. Acceptable types are major, minor and patch." | |
| ) | |
| new_version_tuple = (major, minor, patch) | |
| new_version_str = ".".join([str(x) for x in new_version_tuple]) | |
| new_tag_str = "v" + new_version_str | |
| return new_version_tuple, new_version_str, new_tag_str | |
| def find_version(version_file_path) -> str: | |
| with open(version_file_path) as f: | |
| version = f.read().strip() | |
| return version | |
| def update_version(new_version_str) -> None: | |
| """ | |
| given the current version, update the version to the | |
| next version depending on the type of release. | |
| """ | |
| with open("fairseq/version.txt", "w") as writer: | |
| writer.write(new_version_str) | |
| def main(args): | |
| if args.release_type in ["major", "minor", "patch"]: | |
| new_version_tuple, new_version, new_tag = get_next_version(args.release_type) | |
| else: | |
| raise ValueError("Incorrect release type specified") | |
| if args.update_version: | |
| update_version(new_version) | |
| print(new_version, new_tag) | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser(description="Versioning utils") | |
| parser.add_argument( | |
| "--release-type", | |
| type=str, | |
| required=True, | |
| help="type of release = major/minor/patch", | |
| ) | |
| parser.add_argument( | |
| "--update-version", | |
| action="store_true", | |
| required=False, | |
| help="updates the version in fairseq/version.txt", | |
| ) | |
| args = parser.parse_args() | |
| main(args) | |