# Debian apt-get(8) completion -*- shell-script -*- _apt_get() { local cur prev words cword package _init_completion -n ':=' || return local special i for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(install|remove|autoremove|purge|source|build-dep|download|changelog) ]]; then special=${words[i]} break fi done if [[ -v 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=($(_xfunc apt-cache _apt_cache_packages) $(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 ;;& build-dep) _filedir -d [[ $cur != */* ]] || return ;;& *) COMPREPLY+=($(_xfunc apt-cache _apt_cache_packages)) ;; 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