# This function is required by _dpkg and _dpkg-reconfigure -*- shell-script -*- _have grep-status && { _comp_dpkg_installed_packages() { grep-status -P -e "^$1" -a -FStatus 'ok installed' -n -s Package } } || { _comp_dpkg_installed_packages() { command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null | command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ half-configured" \ -Ee "^Essential: yes" | awk "/Package: $1/ { print \$2 }" 2>/dev/null } } _have grep-status && { _comp_dpkg_purgeable_packages() { grep-status -P -e "^$1" -a -FStatus 'ok installed' -o -FStatus 'ok config-files' -n -s Package } } || { _comp_dpkg_purgeable_packages() { command grep -A 1 "Package: $1" /var/lib/dpkg/status 2>/dev/null | command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ half-configured|config-files" \ -Ee "^Essential: yes" | awk "/Package: $1/ { print \$2 }" 2>/dev/null } } # Debian dpkg(1) completion # _dpkg() { local cur prev words cword split _init_completion -s || return local i=$cword # find the last option flag if [[ $cur != -* ]]; then while [[ $prev != -* && $i -ne 1 ]]; do prev=${words[--i - 1]} done fi case $prev in --install | --unpack | --record-avail | --contents | --info | --fsys-tarfile | \ --field | --control | --extract | --vextract | --raw-extract | -!(-*)[ciAIfexX]) _filedir '?(u|d)deb' return ;; --build | -!(-*)b) _filedir -d return ;; --status | --print-avail | --list | -!(-*)[spl]) COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) return ;; --show | -!(-*)W) if [[ $1 == *dpkg-query ]]; then COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) else _filedir '?(u|d)deb' fi return ;; --search | -!(-*)S) _filedir return ;; --remove | --verify | -!(-*)[rV]) COMPREPLY=($(_comp_dpkg_installed_packages "$cur")) return ;; --listfiles | --purge | -!(-*)[LP]) COMPREPLY=($(_comp_dpkg_purgeable_packages "$cur")) return ;; esac $split && return COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace } && complete -F _dpkg dpkg dpkg-query # Debian dpkg-deb(1) completion # _dpkg_deb() { local cur prev words cword split _init_completion -s || return _expand || return 0 local i=$cword # find the last option flag if [[ $cur != -* ]]; then while [[ $prev != -* && $i -ne 1 ]]; do i=$((i-1)) prev=${words[i-1]} done fi case $prev in -c|-I|-W|-f|-e|-x|-X|-R|--contents|--info|--show|--field|--control| \ --extract|--vextract|--raw-extract|--fsys-tarfile) _filedir '?(u|d)deb' return 0 ;; -b|--build) _filedir -d return 0 ;; esac $split && return COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace } && complete -F _dpkg_deb dpkg-deb # Debian GNU dpkg-reconfigure(8) completion # _dpkg_reconfigure() { local cur prev words cword _init_completion || return local opt case $prev in --frontend | -!(-*)f) opt=($(printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/*)) opt=(${opt[@]##*/}) opt=(${opt[@]%.pm}) COMPREPLY=($(compgen -W '${opt[@]}' -- "$cur")) return ;; --priority | -!(-*)p) COMPREPLY=($(compgen -W 'low medium high critical' -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '--frontend --priority --all --unseen-only --help --showold --force --terse' -- "$cur")) else COMPREPLY=($(_comp_dpkg_installed_packages "$cur")) fi } && complete -F _dpkg_reconfigure -o default dpkg-reconfigure # ex: filetype=sh