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