summaryrefslogtreecommitdiff
path: root/packages.sh
blob: 8296644a14439b56cc6eaac9f709c19b82bd1194 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/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'))
igns=($(printf -- '%s\n' "${all[@]}" | sed -n 's/^i://p'))

echo ' => In packages.txt, but not installed'
comm -13 \
    <(pacman -Qq|sort -u) \
    <({ pacman -Sgq -- "${grps[@]}"; printf '%s\n' "${pkgs[@]}"; }|sort -u) |
sed 's|^|  -> |'

echo ' => Installed explicitly and not depended on, but not in packages.txt'
comm -23 \
    <(pacman -Qetq |sort -u) \
    <({ pacman -Sgq -- "${grps[@]}"; printf '%s\n' "${pkgs[@]}"; }|sort -u) |
sed 's|^|  -> |'

echo ' => Installed explicitly and only optionally depended on, but not in packages.txt'
comm -23 \
    <(comm -23 \
           <(pacman -Qettq|sort -u) \
	   <(pacman -Qetq |sort -u)) \
    <({ pacman -Sgq -- "${grps[@]}"; printf '%s\n' "${pkgs[@]}"; }|sort -u) |
sed 's|^|  -> |'

echo ' => Installed as dependencies, but only optionally depended on'
comm -23 \
     <(pacman -Qdttq|sort -u) \
     <(pacman -Qdtq |sort -u) |
sed 's|^|  -> |'

echo ' => Installed as dependencies, but not depended on'
pacman -Qdtq|sort -u |sed 's|^|  -> |'