summaryrefslogtreecommitdiff
path: root/plugins/archlinux/archlinux.plugin.zsh
diff options
context:
space:
mode:
authorWH-2099 <wh2099@outlook.com>2023-05-25 18:43:01 +0800
committerGitHub <noreply@github.com>2023-05-25 12:43:01 +0200
commit5901f30b44fc5a3055e6b801d3d71af6d2359ee8 (patch)
treee8ac51ce21c29cab6d7aa062060a72ea7220bfa6 /plugins/archlinux/archlinux.plugin.zsh
parentec369bb38e873fa2e8954bc45bc192fdb0051313 (diff)
downloadzsh-5901f30b44fc5a3055e6b801d3d71af6d2359ee8.tar.gz
zsh-5901f30b44fc5a3055e6b801d3d71af6d2359ee8.tar.bz2
zsh-5901f30b44fc5a3055e6b801d3d71af6d2359ee8.zip
feat(archlinux): optimize `paclist` and `pacdisowned` (#11398)
Co-authored-by: ratijas <me@ratijas.tk>
Diffstat (limited to 'plugins/archlinux/archlinux.plugin.zsh')
-rw-r--r--plugins/archlinux/archlinux.plugin.zsh23
1 files changed, 12 insertions, 11 deletions
diff --git a/plugins/archlinux/archlinux.plugin.zsh b/plugins/archlinux/archlinux.plugin.zsh
index da170f488..796ff7adf 100644
--- a/plugins/archlinux/archlinux.plugin.zsh
+++ b/plugins/archlinux/archlinux.plugin.zsh
@@ -25,27 +25,28 @@ alias pacown='pacman -Qo'
alias pacupd="sudo pacman -Sy"
function paclist() {
- # Based on https://bbs.archlinux.org/viewtopic.php?id=93683
- pacman -Qqe | \
- xargs -I '{}' \
- expac "${bold_color}% 20n ${fg_no_bold[white]}%d${reset_color}" '{}'
+ local pkgs=$(LC_ALL=C pacman -Qqe)
+ for pkg in ${(f)pkgs}; do
+ pacman -Qs --color=auto "^${pkg}\$" || break
+ done
}
function pacdisowned() {
- local tmp db fs
- tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$
- db=$tmp/db
- fs=$tmp/fs
+ local tmp_dir db fs
+ tmp_dir=$(mktemp --directory)
+ db=$tmp_dir/db
+ fs=$tmp_dir/fs
- mkdir "$tmp"
- trap 'rm -rf "$tmp"' EXIT
+ trap "rm -rf $tmp_dir" EXIT
pacman -Qlq | sort -u > "$db"
- find /bin /etc /lib /sbin /usr ! -name lost+found \
+ find /etc /usr ! -name lost+found \
\( -type d -printf '%p/\n' -o -print \) | sort > "$fs"
comm -23 "$fs" "$db"
+
+ rm -rf $tmp_dir
}
alias pacmanallkeys='sudo pacman-key --refresh-keys'