]> git.rmz.io Git - dotfiles.git/commitdiff
zsh: add pacclean function
authorSamir Benmendil <me@rmz.io>
Tue, 15 Nov 2016 09:16:58 +0000 (09:16 +0000)
committerSamir Benmendil <me@rmz.io>
Tue, 15 Nov 2016 09:16:58 +0000 (09:16 +0000)
zsh/aliases/pacman.zsh

index ba27286f20f24be547fb038ac0c6e7d1ca06da62..c3a71bb48fc4df9687f9a80ba58fa06ff1967886 100644 (file)
@@ -26,6 +26,30 @@ alias pacmir='sudo pacman -Syy'                # Force refresh of all package li
 paclist() {
   pacman -Qei "$@" | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}'
 }
+
+pacclean() {
+    local _pkgs=( $(pacman -Qeq) )
+    for pkg in ${_pkgs[@]}; do
+        # the file has been removed by a previous clean
+        pacman -Qq $pkg 2>&1 1>/dev/null || continue
+
+        pacman -Qi $pkg | awk 'BEGIN {FS=": "}/^Name/{printf("\n\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}/^(Required|Optional For)/'
+
+        local edrq=''
+        while true; do
+            echo -n "Explicit, Dependency, Remove, Quit? [Edrq] "
+            read -sk edrq
+            echo
+            case $edrq in
+                [Qq]) return ;;
+                $'\n') ;&
+                [Ee]) break ;;
+                [Rr]) sudo pacman -Rnscu $pkg; break ;;
+                [Dd]) sudo pacman -D --asdeps $pkg; break ;;
+            esac
+        done
+    done
+}
 # [l]ist [o]orphans
 alias paclo='pacman -Qdt'
 # [r]emove [o]orphans