summaryrefslogtreecommitdiff
path: root/packages.sh
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-06-30 22:09:48 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-06-30 22:09:48 -0400
commit291a7cb95133288c400ef3853acfa012a451eb27 (patch)
treee2250696c02e28c0ab17d93636c48bb340575577 /packages.sh
parent43f1704d95a4af9eac0882195eb443e0e45d5724 (diff)
packages.sh winston
Diffstat (limited to 'packages.sh')
-rwxr-xr-xpackages.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages.sh b/packages.sh
new file mode 100755
index 0000000..454e0e5
--- /dev/null
+++ b/packages.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+all=($(< packages.txt sed 's/#.*//' | xargs printf -- '%s\n' | sort -u))
+grps=($(printf -- '%s\n' "${all[@]}" | sed -n 's/^g://p'))
+pkgs=($(printf -- '%s\n' "${all[@]}" | sed -n 's/^p://p'))
+
+echo ' => In packages.txt, but not installed'
+comm -13 \
+ <(pacman -Qq|sort -u) \
+ <({ pacman -Qgq -- "${grps[@]}"; printf '%s\n' "${pkgs[@]}"; }|sort -u) |
+sed 's|^| -> |'
+
+echo ' => Installed explicitly, but not in packages.txt'
+comm -23 \
+ <(pacman -Qetq|sort -u) \
+ <({ pacman -Qgq -- "${grps[@]}"; printf '%s\n' "${pkgs[@]}"; }|sort -u) |
+sed 's|^| -> |'
+
+echo ' => Installed as dependencies, but only optionally needed'
+comm -23 \
+ <(pacman -Qdttq|sort -u) \
+ <(pacman -Qdtq |sort -u) |
+sed 's|^| -> |'
+
+echo ' => Installed as dependencies, but no longer needed'
+pacman -Qdtq|sort -u |sed 's|^| -> |'