123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- # Debian apt(8) completion -*- shell-script -*-
- _apt()
- {
- local sourcesdir="/etc/apt/sources.list.d"
- local cur prev words cword
- _init_completion || return
- local GENERIC_APT_GET_OPTIONS='
- -d --download-only
- -y --assume-yes
- --assume-no
- -u --show-upgraded
- -m --ignore-missing
- -t --target-release
- --download
- --fix-missing
- --ignore-hold
- --upgrade
- --only-upgrade
- --allow-change-held-packages
- --allow-remove-essential
- --allow-downgrades
- --print-uris
- --trivial-only
- --remove
- --arch-only
- --allow-unauthenticated
- --allow-insecure-repositories
- --install-recommends
- --install-suggests
- --fix-policy
- '
- # see if the user selected a command already
- local COMMANDS=(
- "list"
- "search"
- "show" "showsrc"
- "install" "remove" "purge" "autoremove"
- "update"
- "upgrade" "full-upgrade" "dist-upgrade"
- "edit-sources"
- "help"
- "source" "build-dep"
- "clean" "autoclean"
- "download" "changelog"
- "moo"
- "depends" "rdepends"
- "policy")
- local command i
- for (( i=0; i < ${#words[@]}-1; i++ )); do
- if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
- command=${words[i]}
- break
- fi
- done
- # Complete a -t<SPACE><TAB>
- case $prev in
- -t|--target-release)
- COMPREPLY=( $( compgen -W "$(apt-cache policy | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)" -- "$cur" ) )
- return 0
- ;;
- esac
- # supported options per command
- if [[ "$cur" == -* ]]; then
- case $command in
- install|remove|purge|upgrade|dist-upgrade|full-upgrade|autoremove)
- COMPREPLY=( $( compgen -W '--show-progress
- --fix-broken --purge --verbose-versions --auto-remove
- -s --simulate --dry-run
- --download
- --fix-missing
- --fix-policy
- --ignore-hold
- --force-yes
- --trivial-only
- --reinstall --solver
- -t --target-release'"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
- return 0
- ;;
- update)
- COMPREPLY=( $( compgen -W '--list-cleanup
- --print-uris
- --allow-insecure-repositories
- ' -- "$cur" ) )
- return 0
- ;;
- list)
- COMPREPLY=( $( compgen -W '--installed --upgradable
- --manual-installed
- -v --verbose
- -a --all-versions
- -t --target-release
- ' -- "$cur" ) )
- return 0
- ;;
- show)
- COMPREPLY=( $( compgen -W '-a --all-versions
- ' -- "$cur" ) )
- return 0
- ;;
- depends|rdepends)
- COMPREPLY=( $( compgen -W '-i
- --important
- --installed
- --pre-depends
- --depends
- --recommends
- --suggests
- --replaces
- --breaks
- --conflicts
- --enhances
- --recurse
- --implicit' -- "$cur" ) )
- return 0
- ;;
- search)
- COMPREPLY=( $( compgen -W '
- -n --names-only
- -f --full' -- "$cur" ) )
- return 0
- ;;
- showsrc)
- COMPREPLY=( $( compgen -W '
- --only-source' -- "$cur" ) )
- return 0
- ;;
- source)
- COMPREPLY=( $( compgen -W '
- -s --simulate --dry-run
- -b --compile --build
- -P --build-profiles
- --diff-only --debian-only
- --tar-only
- --dsc-only
- -t --target-release
- '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
- return 0
- ;;
- build-dep)
- COMPREPLY=( $( compgen -W '
- -a --host-architecture
- -s --simulate --dry-run
- -P --build-profiles
- -t --target-release
- --purge --solver
- '"$GENERIC_APT_GET_OPTIONS" -- "$cur" ) )
- return 0
- ;;
- moo)
- COMPREPLY=( $( compgen -W '
- --color
- ' -- "$cur" ) )
- return 0
- ;;
- clean|autocleean)
- COMPREPLY=( $( compgen -W '
- -s --simulate --dry-run
- ' -- "$cur" ) )
- return 0
- ;;
- esac
- fi
- # specific command arguments
- if [[ -n $command ]]; then
- case $command in
- remove|purge|autoremove)
- 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
- return 0
- ;;
- show|list|download|changelog|depends|rdepends)
- COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
- 2> /dev/null ) )
- return 0
- ;;
- install)
- COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
- 2> /dev/null ) )
- _filedir "*.deb"
- return 0
- ;;
- source|build-dep|showsrc|policy)
- COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
- 2> /dev/null ) $( apt-cache dumpavail | \
- command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
- return 0
- ;;
- edit-sources)
- COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
- -- "$cur" ) )
- return 0
- ;;
- moo)
- COMPREPLY=( $( compgen -W 'moo' \
- -- "$cur" ) )
- return 0
- ;;
- esac
- fi
- # no command yet, show what commands we have
- if [ "$command" = "" ]; then
- COMPREPLY=( $( compgen -W '${COMMANDS[@]}' -- "$cur" ) )
- fi
- return 0
- } &&
- complete -F _apt apt
- # ex: ts=4 sw=4 et filetype=sh
|