def find_latest_version_path()

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