From b65c01da243947a6bca00417e2a83a8df959165c Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Mon, 27 Dec 1999 21:22:24 +0000 Subject: zsh-workers/9161 --- Completion/Debian/_deb_packages | 82 +++++++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 35 deletions(-) (limited to 'Completion/Debian/_deb_packages') diff --git a/Completion/Debian/_deb_packages b/Completion/Debian/_deb_packages index 9561641b7..efd33f93b 100644 --- a/Completion/Debian/_deb_packages +++ b/Completion/Debian/_deb_packages @@ -1,37 +1,49 @@ #autoload -local opt caopts - -# Usage: _deb_packages installed|uninstalled|avail -while getopts "J:" opt; do - case "$opt" in - J) caopts="-J $OPTARG" - shift 2 # presume that -J -default- are the first args - ;; - esac -done - -if (( ! $+_deb_cache_dpkg_get_selections )); then - _deb_cache_dpkg_get_selections=( - ${(f)"$(dpkg --get-selections)"} - ) - _deb_cache_avail=( - ${(f)"$(apt-cache dumpavail | awk '/^Package:/ { print $2 }')"} - ) - _deb_cache_installed=( - ${${_deb_cache_dpkg_get_selections:#*deinstall}%% *} - ) - _deb_cache_uninstalled=( - ${_deb_cache_avail:#${(j:|:)~${_deb_cache_installed:q}}} - ) -fi - -local command="$1" expl -shift - -_wanted packages expl packages && - case "$command" in - installed) compadd "$@" - $_deb_cache_installed;; - uninstalled) compadd "$@" - $_deb_cache_uninstalled;; - avail) compadd "$@" - $_deb_cache_avail;; - esac +# Usage: _deb_packages expl... avail|installed|uninstalled + +_deb_packages_updage_avail () { + if (( ! $+_deb_packages_cache_uninstalled )); then + _deb_packages_cache_avail=( + ${(f)"$(apt-cache dumpavail | awk '/^Package:/ { print $2 }')"} + ) + fi + cachevar=_deb_packages_cache_avail +} + +_deb_packages_updage_installed () { + if (( ! $+_deb_packages_cache_installed )); then + _deb_packages_cache_installed=( + ${${${(f)"$(dpkg --get-selections)"}:#*deinstall}%% *} + ) + fi + cachevar=_deb_packages_cache_installed +} + +_deb_packages_updage_uninstalled () { + _deb_packages_updage_avail + _deb_packages_updage_installed + if (( ! $+_deb_packages_cache_uninstalled )); then + _deb_packages_cache_uninstalled=( + ${_deb_packages_cache_avail:#${(j:|:)~${_deb_packages_cache_installed:q}}} + ) + fi + cachevar=_deb_packages_cache_uninstalled +} + +_deb_packages () { + local command="$argv[$#]" expl cachevar + + [[ "$command" = (installed|uninstalled|avail) ]] || { + _message "_deb_packages:unknown command: $command" + return + } + + expl=("${(@)argv[1,-2]}") + + _deb_packages_updage_$command + + _tags packages && compadd "$expl[@]" - "${(e):-"\${(@)$cachevar}"}" +} + +_deb_packages "$@" -- cgit 1.4.1