release_utils.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import argparse
  2. from typing import Tuple
  3. def get_next_version(release_type) -> Tuple[Tuple[int, int, int], str, str]:
  4. current_ver = find_version("fairseq/version.txt")
  5. version_list = [int(x) for x in current_ver.strip("'").split(".")]
  6. major, minor, patch = version_list[0], version_list[1], version_list[2]
  7. if release_type == "patch":
  8. patch += 1
  9. elif release_type == "minor":
  10. minor += 1
  11. patch = 0
  12. elif release_type == "major":
  13. major += 1
  14. minor = patch = 0
  15. else:
  16. raise ValueError(
  17. "Incorrect release type specified. Acceptable types are major, minor and patch."
  18. )
  19. new_version_tuple = (major, minor, patch)
  20. new_version_str = ".".join([str(x) for x in new_version_tuple])
  21. new_tag_str = "v" + new_version_str
  22. return new_version_tuple, new_version_str, new_tag_str
  23. def find_version(version_file_path) -> str:
  24. with open(version_file_path) as f:
  25. version = f.read().strip()
  26. return version
  27. def update_version(new_version_str) -> None:
  28. """
  29. given the current version, update the version to the
  30. next version depending on the type of release.
  31. """
  32. with open("fairseq/version.txt", "w") as writer:
  33. writer.write(new_version_str)
  34. def main(args):
  35. if args.release_type in ["major", "minor", "patch"]:
  36. new_version_tuple, new_version, new_tag = get_next_version(args.release_type)
  37. else:
  38. raise ValueError("Incorrect release type specified")
  39. if args.update_version:
  40. update_version(new_version)
  41. print(new_version, new_tag)
  42. if __name__ == "__main__":
  43. parser = argparse.ArgumentParser(description="Versioning utils")
  44. parser.add_argument(
  45. "--release-type",
  46. type=str,
  47. required=True,
  48. help="type of release = major/minor/patch",
  49. )
  50. parser.add_argument(
  51. "--update-version",
  52. action="store_true",
  53. required=False,
  54. help="updates the version in fairseq/version.txt",
  55. )
  56. args = parser.parse_args()
  57. main(args)