Spaces:
Runtime error
Runtime error
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved. | |
# | |
# This source code is licensed under the BSD license found in the | |
# LICENSE file in the root directory of this source tree. | |
import argparse | |
import subprocess | |
from pathlib import Path | |
from typing import Optional | |
# TODO: consolidate with the code in build_conda.py | |
THIS_PATH = Path(__file__).resolve() | |
version_from_file = (THIS_PATH.parents[1] / "version.txt").read_text().strip() | |
def get_tagged_version() -> Optional[str]: | |
""" | |
Return whether we are at an exact version (namely the version variable). | |
""" | |
try: | |
tag = subprocess.check_output( | |
["git", "describe", "--tags", "--exact-match", "HEAD"], | |
text=True, | |
stderr=subprocess.DEVNULL, | |
).strip() | |
except subprocess.CalledProcessError: # no tag | |
return None | |
if not tag.startswith("v"): | |
return None | |
return tag[1:] | |
def get_dev_version() -> str: | |
assert ".dev" not in version_from_file | |
num_commits = subprocess.check_output( | |
["git", "rev-list", "--count", "HEAD"], text=True | |
).strip() | |
return f"{version_from_file}.dev{num_commits}" | |
if __name__ == "__main__": | |
parser = argparse.ArgumentParser() | |
parser.add_argument( | |
"--source", choices=["tag", "dev", "tag,dev"], required=False, default="tag,dev" | |
) | |
args = parser.parse_args() | |
if "tag" in args.source: | |
tagged_version = get_tagged_version() | |
if args.source == "tag" and tagged_version is None: | |
raise ValueError("No tag found") | |
else: | |
tagged_version = None | |
if tagged_version is not None: | |
print(tagged_version, end="") | |
else: | |
print(get_dev_version(), end="") | |