Commit de8d191

Eric Bower  ·  2026-08-28 23:13:54 -0400 EDT
parent 4e34554
refactor(pacm): only install missing packages
2 files changed,  +14, -3
+14, -2
 1@@ -4,7 +4,7 @@ set -euo pipefail
 2 PKGFILE="${2:-$HOME/.config/pacm/pkgfile.txt}"
 3 
 4 usage() {
 5-  echo "usage: pacm [init|edit|install|clean|sync] [pkgfile]" >&2
 6+  echo "usage: pacm [init|edit|install|clean|sync|missing] [pkgfile]" >&2
 7 }
 8 
 9 must_pkgfile() {
10@@ -15,8 +15,16 @@ must_pkgfile() {
11   fi
12 }
13 
14+do_missing() {
15+  comm -23 <(sed '/^[[:space:]]*$/d' "$PKGFILE" | sort -u) <(pacman -Qq | sort)
16+}
17+
18 do_install() {
19-  xargs -a "$PKGFILE" sudo pacman -S --needed
20+  local pkgs
21+  pkgs=$(do_missing)
22+  if [[ -n "$pkgs" ]]; then
23+    sudo pacman -S --needed $pkgs
24+  fi
25 }
26 
27 do_clean() {
28@@ -48,6 +56,10 @@ sync)
29   do_install
30   do_clean
31   ;;
32+missing)
33+  must_pkgfile
34+  do_missing
35+  ;;
36 *)
37   usage
38   exit 1
+0, -1
1@@ -59,7 +59,6 @@ moreutils
2 mpv
3 msmtp
4 ncdu
5-networkmanager
6 nfs-utils
7 nmap
8 nodejs