| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- # Debian apt(8) completion -*- shell-script -*-
- _apt()
- {
- local sourcesdir="/etc/apt/sources.list.d"
- local cur prev words cword
- _init_completion || return
- # see if the user selected a command already
- local COMMANDS=(
- "list"
- "search"
- "show"
- "install" "remove" "purge" "autoremove"
- "update"
- "upgrade" "full-upgrade" "dist-upgrade"
- "edit-sources"
- "help")
- local command i
- for (( i=0; i < ${#words[@]}-1; i++ )); do
- if [[ ${COMMANDS[@]} =~ ${words[i]} ]]; then
- command=${words[i]}
- break
- fi
- done
- # 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
- --simulate --dry-run
- --download
- --fix-missing
- --fix-policy
- --ignore-hold
- --force-yes
- --trivial-only
- --reinstall --solver' -- "$cur" ) )
- return 0
- ;;
- update)
- COMPREPLY=( $( compgen -W '--list-cleanup
- ' -- "$cur" ) )
- return 0
- ;;
- list)
- COMPREPLY=( $( compgen -W '--installed --upgradable
- --manual-installed
- -v --verbose
- -a --all-versions
- ' -- "$cur" ) )
- return 0
- ;;
- show)
- COMPREPLY=( $( compgen -W '-a --all-versions
- ' -- "$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)
- 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
- ;;
- edit-sources)
- COMPREPLY=( $( compgen -W '$( command ls $sourcesdir )' \
- -- "$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
|