]> git.rmz.io Git - dotfiles.git/blobdiff - zsh/aliases/pacman.zsh
zsh: allow arguments on pacdisowned
[dotfiles.git] / zsh / aliases / pacman.zsh
index f99a300d9355961f95985a0a6f30227c0f5664db..988902d96e06a922e74c1c45d6aca2dd00d43677 100644 (file)
@@ -1,7 +1,7 @@
 # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips
 alias pacupg='sudo pacman -Syu'        # Synchronize with repositories before upgrading packages that are out of date on the local system.
 alias pacin='sudo pacman -S'           # Install specific package(s) from the repositories
-alias pacins='sudo pacman -U'          # Install specific package not from the repositories but from a file
+alias pacu='sudo pacman -U'            # Install specific package not from the repositories but from a file
 alias pacre='sudo pacman -R'           # Remove the specified package(s), retaining its configuration(s) and required dependencies
 alias pacrem='sudo pacman -Rns'        # Remove the specified package(s), its configuration(s) and unneeded dependencies
 alias pacrm='sudo pacman -Rnsc'        # Remove the specified package(s), its configuration(s) and unneeded dependencies
@@ -9,18 +9,41 @@ alias pacsi='pacman -Sii'              # Display information about a given packa
 alias pacss='pacman -Ss'               # Search for package(s) in the repositories
 alias pacqi='pacman -Qii'              # Display information about a given package in the local database
 alias pacqs='pacman -Qs'               # Search for package(s) in the local database
+alias pacl='pacman -Ql'                # List all files owned by package(s)
+alias paco='pacman -Qo'                # List package owning the given file(s)
+alias pacdep='sudo pacman -D --asdeps'      # Mark package as dependency
+alias pacexp='sudo pacman -D --asexplicit'  # Mark package as explicit
 alias pacinsd='sudo pacman -S --asdeps'        # Install given package(s) as dependencies of another package
 alias pacmir='sudo pacman -Syy'                # Force refresh of all package lists after updating /etc/pacman.d/mirrorlist
 
+[[ -x /usr/bin/packer ]] && alias aur='packer'
+
 # 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}'
 }
 # [l]ist [o]orphans
-alias paclo='sudo pacman -Qdt'
+alias paclo='pacman -Qdt'
 # [r]emove [o]orphans
 alias pacro='sudo pacman -Rnscu $(pacman -Qtdq)'
 
+# Display information about given packages (merges output of -Sii and -Qii)
+paci() {
+    for p in $@; do
+        if [[ -n "$(pacman -Qq "$p" 2>/dev/null)" ]]; then
+            diff -u100 <(pacman -Qii "$p") <(pacman -Sii "$p" | sed '/^$/,$ d') | sed -e '1,3 d' -e 's/[-+ ]//'
+        else
+            pacman -Sii "$p"
+        fi
+    done
+}
+# will only work after another pacman completion has been called first
+compdef '_pacman_completions_all_packages' paci=pacman
+
+pacstat() {
+  LC_ALL=C pacman -Sl | sed -n '/\[installed\]/s/^\([^ ]*\).*/\1/p' | uniq -c
+}
+
 pacdisowned() {
   tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
   db=$tmp/db
@@ -31,8 +54,17 @@ pacdisowned() {
 
   pacman -Qlq | sort -u > "$db"
 
-  find /bin /etc /lib /sbin /usr \
-      ! -name lost+found \
+  local -a d
+  if [[ -z $@ ]]; then
+    d=(/etc /usr)
+  else
+    d=($@)
+  fi
+  find ${d[@]} \
+      ! \( -name lost+found \
+        -o -path '*/local/*' \
+        -o -path "*/share/mime/*" \
+        \) \
         \( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
 
   comm -23 "$fs" "$db"