# Debian aptitude(1) completion -*- shell-script -*- _have grep-status && do { proc _comp_dpkg_hold_packages { grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package } } || do { proc _comp_dpkg_hold_packages { command grep -B 2 'hold' /var/lib/dpkg/status | \ awk "/Package: $1/ { print \$2 }" } } proc _aptitude { local cur prev words cword _init_completion || return local dashoptions='-S -u -i -h --help --version -s --simulate -d --download-only -P --prompt -y --assume-yes -F --display-format -O --sort -w --width -f -r -g --with-recommends -R -G --without-recommends -t --target-release -V --show-versions -D --show-deps -Z -v --verbose --purge-unused --schedule-only' local special i for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full|safe)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag|versions) ]]; then special=${words[i]} fi #exclude some mutually exclusive options [[ ${words[i]} == '-u' ]] && dashoptions=${dashoptions/-i} [[ ${words[i]} == '-i' ]] && dashoptions=${dashoptions/-u} done if [[ -n "$special" ]] { match $special { with install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade| \ safe-upgrade|download|show|changelog|why|why-not|build-dep| \ add-user-tag|remove-user-tag|versions setglobal COMPREPLY = ''( $( apt-cache pkgnames $cur 2> /dev/null ) ) return 0 with purge|remove|reinstall|forbid-version setglobal COMPREPLY = ''( \ $( _xfunc dpkg _comp_dpkg_installed_packages "$cur" ) ) return 0 with unhold setglobal COMPREPLY = ''( $( _comp_dpkg_hold_packages "$cur" ) ) return 0 } } match $prev { # don't complete anything if these options are found with autoclean|clean|forget-new|search|upgrade|update|keep-all return 0 with -S _filedir return 0 with -t|--target-release|--default-release setglobal COMPREPLY = ''( $( apt-cache policy | \ command grep "release.o=Debian,a=$cur" | \ sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) ) return 0 } if [[ "$cur" == -* ]] { setglobal COMPREPLY = ''( $( compgen -W "$dashoptions" -- "$cur" ) ) } else { setglobal COMPREPLY = ''( $( compgen -W 'update upgrade safe-upgrade forget-new clean autoclean install reinstall remove hold unhold purge markauto unmarkauto why why-not dist-upgrade full-upgrade download search show forbid-version changelog keep-all build-dep add-user-tag remove-user-tag versions' -- "$cur" ) ) } return 0 } && complete -F _aptitude -o default aptitude # ex: ts=4 sw=4 et filetype=sh