# Debian apt-get(8) completion -*- shell-script -*- _apt_get() { local cur prev words cword package _init_completion -n ':=' || return local special i for (( i=0; i < ${#words[@]}-1; i++ )); do if [[ ${words[i]} == @(install|remove|autoremove|purge|source|build-dep|download|changelog) ]]; then special=${words[i]} fi done if [[ -n $special ]]; then case $special in remove|autoremove|purge) if [[ -f /etc/debian_version ]]; then # Debian system COMPREPLY=( $(\ _xfunc dpkg _comp_dpkg_installed_packages $cur) ) else # assume RPM based _xfunc rpm _rpm_installed_packages fi ;; source) COMPREPLY=( $(apt-cache --no-generate pkgnames "$cur" \ 2>/dev/null) $(compgen -W "$(apt-cache dumpavail | awk '$1 == "Source:" { print $2 }' | sort -u)" -- "$cur") ) ;; install) if [[ $cur == */* ]]; then _filedir deb return elif [[ $cur == *=* ]]; then package="${cur%%=*}" cur="${cur#*=}" COMPREPLY=($(IFS=$'\n' compgen -W "$( \ apt-cache --no-generate madison "$package" 2>/dev/null | \ while IFS=' |' read -r _ version _; do echo "$version" done )" \ -- "$cur")) __ltrim_colon_completions "$cur" return fi ;;& *) COMPREPLY=( $(apt-cache --no-generate pkgnames "$cur" \ 2>/dev/null) ) ;; esac return fi case $prev in --help|--version|--option|-!(-*)[hvo]) return ;; --config-file|-!(-*)c) _filedir return ;; --target-release|--default-release|-!(-*)t) COMPREPLY=( $(compgen -W "$(apt-cache policy | command sed -ne \ 's/^ *release.*[ ,]o=\(Debian\|Ubuntu\),a=\(\w*\).*/\2/p')" \ -- "$cur") ) return ;; esac if [[ "$cur" == -* ]]; then COMPREPLY=( $(compgen -W '--no-install-recommends --install-suggests --download-only --fix-broken --ignore-missing --fix-missing --no-download --quiet --simulate --just-print --dry-run --recon --no-act --yes --assume-yes --assume-no --no-show-upgraded --verbose-versions --host-architecture --build-profiles --compile --build --ignore-hold --with-new-pkgs --no-upgrade --only-upgrade --allow-downgrades --allow-remove-essential --allow-change-held-packages --force-yes --print-uris --purge --reinstall --list-cleanup --target-release --default-release --trivial-only --no-remove --auto-remove --autoremove --only-source --diff-only --dsc-only --tar-only --arch-only --indep-only --allow-unauthenticated --no-allow-insecure-repositories --allow-releaseinfo-change --show-progress --with-source --help --version --config-file --option' -- "$cur") ) else COMPREPLY=( $(compgen -W 'update upgrade dist-upgrade dselect-upgrade install remove purge source build-dep check download clean autoclean autoremove changelog indextargets' \ -- "$cur") ) fi } && complete -F _apt_get apt-get # ex: filetype=sh