in src/prepare_dlc_dev_environment.py [0:0]
def find_latest_version_path(framework, job_type, optional_tag, major_version, extra_tag):
"""
Find the path to the latest existing version of the buildspec file based on the provided components.
Special condition checks if file is a graviton/arm64 file.
"""
path_prefix = os.path.join(get_cloned_folder_path(), framework, job_type)
graviton_pattern = r"buildspec-graviton-(\d+)-(\d+)(?:-{})?\.yml".format(extra_tag or r"\w*")
arm64_pattern = r"buildspec-arm64-(\d+)-(\d+)(?:-{})?\.yml".format(extra_tag or r"\w*")
general_pattern = r"buildspec(?:-{})?-(\d+)-(\d+)(?:-{})?\.yml".format(
optional_tag or r"\w*", extra_tag or r"\w*"
)
latest_version = (int(major_version), 0)
latest_path = None
for file_name in os.listdir(path_prefix):
graviton_match = re.match(graviton_pattern, file_name)
arm64_match = re.match(arm64_pattern, file_name)
general_match = re.match(general_pattern, file_name)
if graviton_match:
major_version_str, minor_version_str = graviton_match.groups()[:2]
version = (int(major_version_str), int(minor_version_str))
if version > latest_version:
latest_version = version
latest_path = os.path.join(path_prefix, file_name)
elif arm64_match:
major_version_str, minor_version_str = arm64_match.groups()[:2]
version = (int(major_version_str), int(minor_version_str))
if version > latest_version:
latest_version = version
latest_path = os.path.join(path_prefix, file_name)
elif general_match:
major_version_str, minor_version_str = general_match.groups()[:2]
minor_version_str = int(minor_version_str)
if extra_tag:
version = (int(major_version_str), minor_version_str, extra_tag)
else:
version = (int(major_version_str), minor_version_str)
if version > latest_version:
latest_version = version
latest_path = os.path.join(path_prefix, file_name)
return latest_path