# Debian aptitude(1) completion have aptitude && { have grep-status && { _comp_dpkg_hold_packages() { grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package } } || { _comp_dpkg_hold_packages() { command grep -B 2 'hold' /var/lib/dpkg/status | \ command grep "Package: $1" | cut -d\ -f2 } } _aptitude() { local cur dashoptions prev special i COMPREPLY=() _get_comp_words_by_ref cur prev 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' for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do if [[ ${COMP_WORDS[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag) ]]; then special=${COMP_WORDS[i]} fi #exclude some mutually exclusive options [[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i} [[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u} done if [[ -n "$special" ]]; then case $special in install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade| \ download|show|changelog|why|why-not|build-dep|add-user-tag| \ remove-user-tag) COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) return 0 ;; purge|remove|reinstall|forbid-version) COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) return 0 ;; unhold) COMPREPLY=( $( _comp_dpkg_hold_packages "$cur" ) ) return 0 ;; esac fi case $prev in # don't complete anything if these options are found autoclean|clean|forget-new|search|safe-upgrade|upgrade|update|keep-all) return 0 ;; -S) _filedir return 0 ;; -t|--target-release|--default-release) COMPREPLY=( $( apt-cache policy | \ command grep "release.o=Debian,a=$cur" | \ sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) ) return 0 ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$dashoptions" -- "$cur" ) ) else 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' -- "$cur" ) ) fi return 0 } complete -F _aptitude -o default aptitude } # Local variables: # mode: shell-script # sh-basic-offset: 4 # sh-indent-comment: t # indent-tabs-mode: nil # End: # ex: ts=4 sw=4 et filetype=sh