# Debian aptitude(1) completion -*- shell-script -*- _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 | \ awk "/Package: $1/ { print \$2 }" } } _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" ]]; then case $special in 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) COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) return 0 ;; purge|remove|reinstall|forbid-version) COMPREPLY=( \ $( _xfunc dpkg _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|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 versions' -- "$cur" ) ) fi return 0 } && complete -F _aptitude -o default aptitude # ex: ts=4 sw=4 et filetype=sh