from typing import List from commands.util import pacman from commands.util.input_mgr import confirm, password import colorama as cl from commands.util.printer import print_list def commit(force: bool = False, no_render: bool = False): print("Commit, force:", force) # TODO: Make sure we don't uninstall critical system packages by accident (i.e. prompt user) # Probably do that check in the pacman util lib tho print_diff(pacman.list_explicitly_installed(), []) if confirm(True, "Do you really want to proceed?"): pw = password() def print_diff(add: List[str], remove: List[str]): if len(add) == 0 and len(remove) == 0: print( cl.Fore.BLUE + "-->" + cl.Style.DIM + cl.Fore.GREEN + " No packages changes" + cl.Style.RESET_ALL, ) # Packages to be installed if len(add) == 0: print( cl.Fore.BLUE + "-->" + cl.Style.DIM + cl.Fore.GREEN + " No packages to be installed" + cl.Style.RESET_ALL, ) else: print( cl.Fore.GREEN + "==>", cl.Style.RESET_ALL + "Packages that will be", cl.Fore.GREEN + "installed" + cl.Style.RESET_ALL, ) print_list(add) print() # Packages to be removed if len(remove) == 0: print( cl.Fore.BLUE + "-->" + cl.Style.DIM + cl.Fore.GREEN + " No packages to be uninstalled" + cl.Style.RESET_ALL, ) else: print( cl.Fore.GREEN + "==>", cl.Style.RESET_ALL + "Packages that will be", cl.Fore.RED + "uninstalled" + cl.Style.RESET_ALL, ) print_list(remove) print() # Ask user to confirm print( cl.Fore.GREEN + "==>", cl.Style.RESET_ALL + f"Transaction (packages): {cl.Fore.BLUE + str(len(add)) + cl.Style.RESET_ALL}", cl.Fore.GREEN + "installed", cl.Style.RESET_ALL + f"and {cl.Fore.BLUE + str(len(remove)) + cl.Style.RESET_ALL}", cl.Fore.RED + "uninstalled" + cl.Style.RESET_ALL, )