summaryrefslogtreecommitdiffstats
path: root/completions/apt-get
diff options
context:
space:
mode:
Diffstat (limited to 'completions/apt-get')
-rw-r--r--completions/apt-get104
1 files changed, 104 insertions, 0 deletions
diff --git a/completions/apt-get b/completions/apt-get
new file mode 100644
index 0000000..4aee263
--- /dev/null
+++ b/completions/apt-get
@@ -0,0 +1,104 @@
+# 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