]> git.rmz.io Git - dotfiles.git/blobdiff - zsh/aliases/pacman.zsh
zsh: print summary at end of pacclean
[dotfiles.git] / zsh / aliases / pacman.zsh
index d44641b802718bb25feb3c8e122b68f2baeec6ab..34c5d8cd9d30742ff9d97bfcb56d10992629d109 100644 (file)
@@ -24,7 +24,42 @@ alias pacmir='sudo pacman -Syy'                # Force refresh of all package li
 
 # https://bbs.archlinux.org/viewtopic.php?id=93683
 paclist() {
-  pacman -Qei | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}'
+  pacman -Qei "$@" | awk 'BEGIN {FS=": "}/^Name/{printf("\033[1;36m%s\033[0m ",$2)}/^Description/{print $2}'
+}
+
+pacclean() {
+    local _count_pkg=$(pacman -Qq | wc -l)
+    local _count_pkg_exp=$(pacman -Qeq | wc -l)
+    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]) break 2 ;;
+                $'\n') ;&
+                [Ee]) break ;;
+                [Rr]) sudo pacman -Rnscu $pkg; break ;;
+                [Dd]) sudo pacman -D --asdeps $pkg; break ;;
+            esac
+        done
+    done
+    local _count_pkg_after=$(pacman -Qq | wc -l)
+    local _count_pkg_exp_after=$(pacman -Qeq | wc -l)
+    local _delta_pkg=$(($_count_pkg_after - $_count_pkg))
+    local _delta_pkg_exp=$(($_count_pkg_exp_after - $_count_pkg_exp))
+    printf "\n         %8s | %8s" "Packages"        "Explicit"
+    printf "\nBefore | %8d | %8d" $_count_pkg       $_count_pkg_exp
+    printf "\n After | %8d | %8d" $_count_pkg_after $_count_pkg_exp_after
+    printf "\n       | %8d | %8d" $_delta_pkg       $_delta_pkg_exp
+    printf "\n"
 }
 # [l]ist [o]orphans
 alias paclo='pacman -Qdt'
@@ -45,6 +80,11 @@ paci() {
 compdef '_pacman_completions_all_packages' paci=pacman
 
 pacstat() {
+  printf "Packages:\n"
+  printf "%7d native\n"  $(LC_ALL=C pacman -Qn | wc -l)
+  printf "%7d foreign\n" $(LC_ALL=C pacman -Qm | wc -l)
+  printf "%7d total\n"   $(LC_ALL=C pacman -Q  | wc -l)
+  printf "Repos:\n"
   LC_ALL=C pacman -Sl | sed -n '/\[installed\]/s/^\([^ ]*\).*/\1/p' | uniq -c
 }