def update_hash_with_directory()

in tools/ci_build/get_docker_image.py [0:0]


def update_hash_with_directory(dir_file_info: FileInfo, hash_obj):
    hash_obj.update(file_info_str(dir_file_info).encode())

    files, dirs = [], []
    for dir_entry in os.scandir(dir_file_info.path):
        file_info = FileInfo(dir_entry.path, dir_entry.stat().st_mode)
        if dir_entry.is_dir():
            dirs.append(file_info)
        elif dir_entry.is_file():
            files.append(file_info)

    def file_info_key(file_info: FileInfo):
        return file_info.path

    files.sort(key=file_info_key)
    dirs.sort(key=file_info_key)

    for file_info in files:
        update_hash_with_file(file_info, hash_obj)

    for file_info in dirs:
        update_hash_with_directory(file_info, hash_obj)