123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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)
|