From 1b5eb8c537dc1d6e0dc7c6b5ac9819b26f670810 Mon Sep 17 00:00:00 2001 From: Joscha Date: Tue, 14 Oct 2025 00:24:59 +0200 Subject: [PATCH] Fix pacman module not uninstalling packages --- pasch/modules/pacman.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/pasch/modules/pacman.py b/pasch/modules/pacman.py index ab1cebb..1364c4a 100644 --- a/pasch/modules/pacman.py +++ b/pasch/modules/pacman.py @@ -1,4 +1,5 @@ from dataclasses import dataclass, field +from subprocess import CalledProcessError from rich import print from rich.markup import escape @@ -82,17 +83,22 @@ class Pacman(Module): def _install_packages(self, packages: set[str]) -> None: if self.orchestrator.dry_run: return - if not packages: - return - self._pacman_execute("-S", "--needed", *sorted(packages)) - self._pacman_execute("-D", "--asexplicit", *sorted(packages)) + if packages: + self._pacman_execute("-S", "--needed", *sorted(packages)) + self._pacman_execute("-D", "--asexplicit", *sorted(packages)) def _uninstall_packages(self, packages: set[str]) -> None: if self.orchestrator.dry_run: return - if not packages: - return - self._pacman_execute("-D", "--asdeps", *sorted(packages)) - self._pacman_execute("-Rsn", *self._pacman_capture("-Qqdt").splitlines()) + if packages: + self._pacman_execute("-D", "--asdeps", *sorted(packages)) + + try: + to_remove = self._pacman_capture("-Qqdt").splitlines() + except CalledProcessError: + return # pacman returns nonzero exit code if the query is empty + + if to_remove: + self._pacman_execute("-Rsn", *to_remove)