diff options
author | WH-2099 <wh2099@outlook.com> | 2023-05-25 18:43:01 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-25 12:43:01 +0200 |
commit | 5901f30b44fc5a3055e6b801d3d71af6d2359ee8 (patch) | |
tree | e8ac51ce21c29cab6d7aa062060a72ea7220bfa6 /plugins/archlinux/archlinux.plugin.zsh | |
parent | ec369bb38e873fa2e8954bc45bc192fdb0051313 (diff) | |
download | zsh-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.zsh | 23 |
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' |