feat(pacman): Add needed commands
This commit is contained in:
48
commands/util/pacman.py
Normal file
48
commands/util/pacman.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user