aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/justfile
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-04-21 01:23:28 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-04-21 01:23:28 +0100
commit098fd7b994bb1c9953de0e303ca9fa5d07916579 (patch)
treeeaf1a05cd85dca91daeff269ab126b064278904f /justfile
parent4a6334063f59a78170bc1d45ca7e92b4aaddd359 (diff)
downloaddotfiles-098fd7b994bb1c9953de0e303ca9fa5d07916579.tar.gz
dotfiles-098fd7b994bb1c9953de0e303ca9fa5d07916579.tar.bz2
dotfiles-098fd7b994bb1c9953de0e303ca9fa5d07916579.zip
feat: add 'just remove' to drop packages from a group and uninstall
Diffstat (limited to 'justfile')
-rw-r--r--justfile20
1 files changed, 20 insertions, 0 deletions
diff --git a/justfile b/justfile
index 2345d22..86d8c4a 100644
--- a/justfile
+++ b/justfile
@@ -157,6 +157,26 @@ add group +pkgs:
paru -S --needed {{ pkgs }}
+# Remove one or more packages from a group list and uninstall them (e.g. just remove dev ripgrep fd)
+remove group +pkgs:
+ #!/bin/sh
+ set -eu
+ file="meta/{{ group }}.txt"
+ if [ ! -f "$file" ]; then
+ echo "error: $file does not exist" >&2
+ exit 1
+ fi
+ for pkg in {{ pkgs }}; do
+ if grep -qxF "$pkg" "$file"; then
+ sed -i "/^$(printf '%s' "$pkg" | sed 's/[]\/$*.^[]/\\&/g')\$/d" "$file"
+ echo "removed $pkg from {{ group }}.txt"
+ else
+ echo "$pkg not in {{ group }}.txt"
+ fi
+ done
+ paru -Rsn {{ pkgs }}
+
+
# ═══════════════════════════════════════════════════════════════════
# Hidden helpers (run indirectly via the recipes above)
# ═══════════════════════════════════════════════════════════════════