import subprocess as sp from typing import List pkg_manager = ["yay", "--noconfirm"] def list_explicitly_installed() -> List[str]: """List all packages explicitly installed Returns: The package list """ return run_pkg_manager_cmd(["-Qeq"]).stdout.split() def uninstall_package_list(pkgs: List[str]) -> bool: """Uninstall all packages in the list Args: pkgs: A list of packages to uninstall Returns: True if successful, False otherwise """ # TODO: Add guard to protect against uninstalling archmgr # pkgs.index("archmgr") # TODO: Consider if we want to print out stdout and stderr on err return run_pkg_manager_cmd(["-Rs", *pkgs], True).returncode == 0 def install_package_list(pkgs: List[str]) -> bool: """Install all packages in the list Args: pkgs: A list of packages to install """ return run_pkg_manager_cmd(["-S", *pkgs], True).returncode == 0 def run_pkg_manager_cmd( args: List[str], use_sudo: bool = False ) -> sp.CompletedProcess[str]: # TODO: Get password pw = "" if use_sudo: return sp.run([*pkg_manager, *args], capture_output=True, text=True, input=pw) else: return sp.run([*pkg_manager, *args], capture_output=True, text=True)