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/_apt | 10 ++--- Completion/Debian/_deb_packages | 82 +++++++++++++++++++++++------------------ 2 files changed, 52 insertions(+), 40 deletions(-) (limited to 'Completion/Debian') diff --git a/Completion/Debian/_apt b/Completion/Debian/_apt index 9d51533ab..5fcea162b 100644 --- a/Completion/Debian/_apt +++ b/Completion/Debian/_apt @@ -375,14 +375,14 @@ _apt-get () { -- \ /$'update\0'/ \| \ /$'upgrade\0'/ \| \ - /$'install\0'/ /$'[^\0]#\0'/ :'_deb_packages uninstalled "$expl_packages[@]" || _deb_packages installed "$expl_packages[@]" ' \# \| \ - /$'remove\0'/ /$'[^\0]#\0'/ :'_deb_packages installed "$expl_packages[@]"' \# \| \ + /$'install\0'/ /$'[^\0]#\0'/ :'_deb_packages "$expl_packages[@]" uninstalled || _deb_packages "$expl_packages[@]" installed' \# \| \ + /$'remove\0'/ /$'[^\0]#\0'/ :'_deb_packages "$expl_packages[@]" installed' \# \| \ /$'dist-upgrade\0'/ \| \ /$'dselect-upgrade\0'/ \| \ /$'clean\0'/ \| \ /$'autoclean\0'/ \| \ /$'check\0'/ \| \ - /$'source\0'/ /$'[^\0]#\0'/ :'_deb_packages avail "$expl_packages[@]"' \# \| \ + /$'source\0'/ /$'[^\0]#\0'/ :'_deb_packages "$expl_packages[@]" avail' \# \| \ /$'help\0/' \| \ /"[]"/ :'_tags actions && compadd "$expl_action[@]" update upgrade install remove dist-upgrade dselect-upgrade clean autoclean check source help' @@ -413,14 +413,14 @@ _apt-cache () { /$'help\0'/ \| \ /$'add\0'/ /$'[^\0]#\0'/ :'_files' \# \| \ /$'gencaches\0'/ \| \ - /$'showpkg\0'/ /$'[^\0]#\0'/ :'_deb_packages avail "$expl_packages[@]"' \# \| \ + /$'showpkg\0'/ /$'[^\0]#\0'/ :'_deb_packages "$expl_packages[@]" avail' \# \| \ /$'stats\0'=$status[4]/ \| \ /$'dump\0'/ \| \ /$'dumpavail\0'/ \| \ /$'unmet\0'/ \| \ /$'check\0'/ \| \ /$'search\0'/ \| \ - /$'show\0'/ /$'[^\0]#\0'/ :'_deb_packages avail "$expl_packages[@]"' \# \| \ + /$'show\0'/ /$'[^\0]#\0'/ :'_deb_packages "$expl_packages[@]" avail' \# \| \ /$'depends\0'/ \| \ /"[]"/ :'_tags actions && compadd "$expl_action[@]" help add gencaches showpkg stats dump dumpavail unmet check search show depends' 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