sisyphus/arch/stow/_scripts/.scripts/cleandependencies.sh

26 lines
1 KiB
Bash
Executable file

#!/usr/bin/env bash
# Remove unused dependencies that are not explicitly installed
# Usage: [sudo] cleandependencies
# Retrieve a list of all packages that are not explicitly installed and are not needed by anything else.
# Note that optional dependencies also do not get removed.
# function getList () {
# grep "Name\|Required By\|Optional For\|Install Reason" <<< $(pacman -Qi) |
# tr '\n' ';' | sed "s/$/\n/" |
# sed "s/ */ /g" |
# sed "s/Name/\nName/g" |
# sed "s/\(Name\|Required By\|Optional For\|Install Reason\) : //g" |
# grep "Installed as a dependency for another package" |
# grep "^[^;]*;None;None" |
# cut -f 1 -d ';'
# } ; export -f getList
current_amount=$(pacman -Qdtq | wc -l)
# Keep looping while there are unusded dependencies.
# Stop when the next amount is the same, probably because the action was canceled.
while [[ ${current_amount} -ne 0 && ${current_amount} -ne ${previous_amount:=0} ]] ; do
previous_amount=${current_amount}
pacman -R $(pacman -Qdtq)
current_amount=$(pacman -Qdtq | wc -l)
done