import argparse
import os


def compare_dirs(dir1, dir2):
    # First, we need to check if the two directories exist
    if not os.path.exists(dir1) or not os.path.exists(dir2):
        return False

    # Now, we compare the list of items in each directory
    items1 = os.listdir(dir1)
    items2 = os.listdir(dir2)

    # If the number of items in each directory is different, the directories are different
    if len(items1) != len(items2):
        return False

    # For each item in the first directory, we check if there is a corresponding item in the second directory
    for item in items1:
        item_path1 = os.path.join(dir1, item)
        item_path2 = os.path.join(dir2, item)

        # If the corresponding item doesn't exist in the second directory, the directories are different
        if not os.path.exists(item_path2):
            print(f'Found mismatch: {item_path1}, {item_path2}')
            return False

        # If the corresponding item is a directory, we compare the two directories recursively
        if os.path.isdir(item_path1) and os.path.isdir(item_path2):
            if not compare_dirs(item_path1, item_path2):
                print(f'Found mismatch: {item_path1}, {item_path2}')
                return False

        # both are files
        elif os.path.isfile(item_path1) and os.path.isfile(item_path2):
            continue

        # If the corresponding item is not a file or a directory, the directories are different
        else:
            print(f'Found mismatch: {item_path1}, {item_path2}')
            return False

    # If all items are the same, the directories are the same
    return True


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-d', '--directory', help="The directory where the multi-language source files are kept.")
    args = parser.parse_args()

    i18n_folders = os.listdir(args.directory)
    i18n_folders = [os.path.join(args.directory, val) for val in i18n_folders]

    if len(i18n_folders) > 1:
        for i in range(1, len(i18n_folders)):
            dir1 = i18n_folders[0]
            dir2 = i18n_folders[i]
            print(f'comparing {dir1} vs {dir2}')
            match = compare_dirs(i18n_folders[0], i18n_folders[i])

            if not match:
                print(
                    f"{dir1} and {dir2} don't match, please ensure that your documentation is available in different languages"
                )
            else:
                print(f"{dir1} and {dir2} match")
