feat: Diff packages
This commit is contained in:
+11
-65
@@ -1,75 +1,21 @@
|
||||
from typing import List
|
||||
from commands.util import pacman
|
||||
from commands.util.diff import pkg_diff
|
||||
from commands.util.input_mgr import confirm, password
|
||||
import colorama as cl
|
||||
|
||||
from commands.util.printer import print_list
|
||||
from commands.util.printing.diff import print_diff
|
||||
|
||||
|
||||
def commit(force: bool = False, no_render: bool = False):
|
||||
print("Commit, force:", force)
|
||||
"""Commit the changes to the system
|
||||
|
||||
Args:
|
||||
force: Apply, overriding any changes since the last commit without confirming
|
||||
no_render: Don't rerender the templates (use cached version).
|
||||
Will be ignored if cache is unavailable (and prompt the user)
|
||||
"""
|
||||
# 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(), [])
|
||||
add, remove = pkg_diff([], pacman.list_explicitly_installed())
|
||||
print_diff(add, remove)
|
||||
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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user