# This function is required by _dpkg and _dpkg-reconfigure -*- shell-script -*- _have grep-status && do { proc _comp_dpkg_installed_packages { grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package } } || do { proc _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 && do { proc _comp_dpkg_purgeable_packages { grep-status -P -e "^$1" -a -FStatus 'install ok installed' -o -FStatus 'deinstall ok config-files' -n -s Package } } || do { proc _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(8) completion # proc _dpkg { var cur = '', prev = '', words = '', cword = '', split = '' _init_completion -s || return _expand || return 0 var i = $cword # find the last option flag if [[ $cur != -* ]] { { set i = $shExpr('i-1') set prev = $(words[i-1]) } } match $prev { with -c|-i|-A|-I|-f|-e|-x|-X|-W|--install|--unpack|--record-avail| \ --contents|--info|--fsys-tarfile|--field|--control|--extract| \ --show _filedir '?(u|d)deb' return 0 with -b|--build _filedir -d return 0 with -s|-p|-l|--status|--print-avail|--list setglobal COMPREPLY = '( '$( apt-cache pkgnames "$cur" 2>/dev/null ) ) return 0 with -S|--search _filedir return 0 with -r|--remove setglobal COMPREPLY = '( '$( _comp_dpkg_installed_packages "$cur" ) ) return 0 with -L|-P|--listfiles|--purge setglobal COMPREPLY = '( '$( _comp_dpkg_purgeable_packages "$cur" ) ) return 0 } $split && return setglobal COMPREPLY = '( '$( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace } && complete -F _dpkg dpkg dpkg-deb dpkg-query # Debian GNU dpkg-reconfigure(8) completion # proc _dpkg_reconfigure { var cur = '', prev = '', words = '', cword = '' _init_completion || return var opt = '' match $prev { with -f|--frontend set opt = '( '$( printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/* ) ) set opt = '( '${opt[@]##*/} ) set opt = '( '${opt[@]%.pm} ) setglobal COMPREPLY = '( '$( compgen -W '${opt[@]}' -- "$cur" ) ) return 0 with -p|--priority setglobal COMPREPLY = '( '$( compgen -W 'low medium high critical' -- "$cur" ) ) return 0 } if [[ "$cur" == -* ]] { setglobal COMPREPLY = '( '$(compgen -W '--frontend --priority --all --unseen-only --help --showold --force --terse' -- "$cur" ) ) } else { setglobal COMPREPLY = '( '$( _comp_dpkg_installed_packages "$cur" ) ) } } && complete -F _dpkg_reconfigure -o default dpkg-reconfigure # ex: ts=4 sw=4 et filetype=sh