diff options
author | Gabriel F. T. Gomes <gabriel@inconstante.net.br> | 2020-08-03 18:43:14 -0300 |
---|---|---|
committer | Gabriel F. T. Gomes <gabriel@inconstante.net.br> | 2020-08-03 18:43:14 -0300 |
commit | cc81eb120ad1a456f030f7b828697013a9b2b66a (patch) | |
tree | bb61702f98b407b2f7987faa846190fb3f002e55 /completions/aptitude | |
parent | 8394526300cc384e53c470303aeb8b4fdcaf84a3 (diff) | |
parent | 95623d39d6029ba78ec96ad5ea08e9ac12629b91 (diff) | |
download | bash-completion-cc81eb120ad1a456f030f7b828697013a9b2b66a.tar.gz |
Update upstream source from tag 'upstream/2.11'
Update to upstream version '2.11'
with Debian dir 932c2c1a6192441f3cd8897e72d737f2f0277f60
Diffstat (limited to 'completions/aptitude')
-rw-r--r-- | completions/aptitude | 108 |
1 files changed, 70 insertions, 38 deletions
diff --git a/completions/aptitude b/completions/aptitude index 3f4e5500..e5ea1636 100644 --- a/completions/aptitude +++ b/completions/aptitude @@ -1,16 +1,16 @@ # Debian aptitude(1) completion -*- shell-script -*- _have grep-status && { -_comp_dpkg_hold_packages() -{ - grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package -} + _comp_dpkg_hold_packages() + { + grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package + } } || { -_comp_dpkg_hold_packages() -{ - command grep -B 2 'hold' /var/lib/dpkg/status | \ - awk "/Package: $1/ { print \$2 }" -} + _comp_dpkg_hold_packages() + { + command grep -B 2 'hold' /var/lib/dpkg/status | + awk "/Package: $1/ { print \$2 }" + } } _aptitude() @@ -18,37 +18,29 @@ _aptitude() local cur prev words cword _init_completion || return - local dashoptions='-S -u -i -h --help --version -s --simulate -d - --download-only -P --prompt -y --assume-yes -F --display-format -O - --sort -w --width -f -r -g --with-recommends -R -G --without-recommends - -t --target-release -V --show-versions -D --show-deps -Z -v --verbose - --purge-unused --schedule-only' - local special i - for (( i=0; i < ${#words[@]}-1; i++ )); do + for ((i = 1; i < ${#words[@]} - 1; i++)); do if [[ ${words[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full|safe)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag|versions) ]]; then special=${words[i]} + break fi - #exclude some mutually exclusive options - [[ ${words[i]} == '-u' ]] && dashoptions=${dashoptions/-i} - [[ ${words[i]} == '-i' ]] && dashoptions=${dashoptions/-u} done - if [[ -n "$special" ]]; then + if [[ -v special ]]; then case $special in - install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade| \ - safe-upgrade|download|show|changelog|why|why-not|build-dep| \ - add-user-tag|remove-user-tag|versions) - COMPREPLY=( $(_xfunc apt-cache _apt_cache_packages) ) + install | hold | markauto | unmarkauto | dist-upgrade | full-upgrade | \ + safe-upgrade | download | show | changelog | why | why-not | build-dep | \ + add-user-tag | remove-user-tag | versions) + COMPREPLY=($(_xfunc apt-cache _apt_cache_packages)) return ;; - purge|remove|reinstall|forbid-version) - COMPREPLY=( \ - $(_xfunc dpkg _comp_dpkg_installed_packages "$cur") ) + purge | remove | reinstall | forbid-version) + COMPREPLY=( + $(_xfunc dpkg _comp_dpkg_installed_packages "$cur")) return ;; unhold) - COMPREPLY=( $(_comp_dpkg_hold_packages "$cur") ) + COMPREPLY=($(_comp_dpkg_hold_packages "$cur")) return ;; esac @@ -56,32 +48,72 @@ _aptitude() case $prev in # don't complete anything if these options are found - autoclean|clean|forget-new|search|upgrade|update|keep-all) + autoclean | clean | forget-new | search | upgrade | update | keep-all) return ;; -!(-*)S) _filedir return ;; - --target-release|--default-release|-!(-*)t) - COMPREPLY=( $(apt-cache policy | \ - command grep "release.o=Debian,a=$cur" | \ - command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2>/dev/null) ) + --display-format | --width | -!(-*)[wFo]) + return + ;; + --sort | -!(-*)O) + COMPREPLY=($(compgen -W 'installsize installsizechange debsize + name priority version' -- "$cur")) + return + ;; + --target-release | --default-release | -!(-*)t) + COMPREPLY=($(apt-cache policy | + command grep "release.o=Debian,a=$cur" | + command sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2>/dev/null)) return ;; esac - if [[ "$cur" == -* ]]; then - COMPREPLY=( $(compgen -W "$dashoptions" -- "$cur") ) + if [[ $cur == -* ]]; then + local opts=" $($1 --help 2>&1 | command sed -e \ + 's/--with(out)-recommends/--without-recommends\n--with-recommends/' | + _parse_help - | tr '\n' ' ') " + + # Exclude some mutually exclusive options + for i in "${words[@]}"; do + [[ $i == -u ]] && opts=${opts/ -i / } + [[ $i == -i ]] && opts=${opts/ -u / } + done + + # Do known short -> long replacements; at least up to 0.8.12, --help + # outputs mostly only short ones. + COMPREPLY=($opts) + for i in "${!COMPREPLY[@]}"; do + case ${COMPREPLY[i]} in + -h) COMPREPLY[i]=--help ;; + -s) COMPREPLY[i]=--simulate ;; + -d) COMPREPLY[i]=--download-only ;; + -P) COMPREPLY[i]=--prompt ;; + -y) COMPREPLY[i]=--assume-yes ;; + -F) COMPREPLY[i]=--display-format ;; + -O) COMPREPLY[i]=--sort ;; + -W) COMPREPLY[i]=--show-why ;; + -w) COMPREPLY[i]=--width ;; + -V) COMPREPLY[i]=--show-versions ;; + -D) COMPREPLY[i]=--show-deps ;; + -v) COMPREPLY[i]=--verbose ;; + -t) COMPREPLY[i]=--target-release ;; + -q) COMPREPLY[i]=--quiet ;; + esac + done + + COMPREPLY=($(compgen -W '${COMPREPLY[@]}' -- "$cur")) else - COMPREPLY=( $(compgen -W 'update upgrade safe-upgrade forget-new + COMPREPLY=($(compgen -W 'update upgrade safe-upgrade forget-new clean autoclean install reinstall remove hold unhold purge markauto unmarkauto why why-not dist-upgrade full-upgrade download search show forbid-version changelog keep keep-all build-dep add-user-tag - remove-user-tag versions' -- "$cur") ) + remove-user-tag versions' -- "$cur")) fi } && -complete -F _aptitude -o default aptitude aptitude-curses + complete -F _aptitude -o default aptitude aptitude-curses # ex: filetype=sh |