def print_grand_summary()

in scripts/elf_ubuntu_dependency_analyzer.py [0:0]


def print_grand_summary(grand_summary, grand_special_cases, grand_missing_libraries):
    """
    Print a grand summary of all analyzed binaries.

    Args:
    grand_summary (dict): Dictionary of all packages and their details.
    grand_special_cases (list): List of all special cases.
    grand_missing_libraries (dict): Dictionary of all missing libraries.
    """
    if grand_summary or grand_special_cases or grand_missing_libraries:
        print("\nGrand Summary of runtime packages required across all binaries:")
        table = PrettyTable(['Package', 'Included Packages'])
        table.align['Package'] = 'l'
        table.align['Included Packages'] = 'l'
        for package_name, full_package_names in sorted(grand_summary.items()):
            included_packages = '\n'.join(sorted(full_package_names))
            table.add_row([package_name, included_packages])
        print(table)

        if grand_missing_libraries:
            print("\nGrand Summary of MISSING LIBRARIES across all binaries:")
            missing_table = PrettyTable(['Missing Library', 'Referenced By'])
            missing_table.align['Missing Library'] = 'l'
            missing_table.align['Referenced By'] = 'l'
            for lib, binaries in sorted(grand_missing_libraries.items()):
                missing_table.add_row([lib, '\n'.join(sorted(binaries))])
            print(missing_table)

        print("\nGrand Summary of special cases across all binaries:")
        if grand_special_cases:
            special_table = PrettyTable(['Library/Case', 'Referenced By', 'Category'])
            special_table.align['Library/Case'] = 'l'
            special_table.align['Referenced By'] = 'l'
            special_table.align['Category'] = 'l'
            for case, binary in sorted(set(grand_special_cases)):
                category = "System Library" if "system library" in case else "Other"
                library = case.split(" is ")[0] if " is " in case else case
                special_table.add_row([library, binary, category])
            print(special_table)
        else:
            print("No special cases found.")