diff options
author | David Paleino <dapal@debian.org> | 2011-02-06 21:26:41 +0100 |
---|---|---|
committer | David Paleino <dapal@debian.org> | 2011-02-06 21:26:41 +0100 |
commit | 9920a8faedf704420571d8072ccab27e9dac40ba (patch) | |
tree | 733edf3b07be06c130d04aaa1884213326722cad /completions/update-alternatives | |
parent | f9748115fb4b2950fb4df7535fb723c4affde078 (diff) | |
download | bash-completion-9920a8faedf704420571d8072ccab27e9dac40ba.tar.gz |
Imported Upstream version 1.3upstream/1.3
Diffstat (limited to 'completions/update-alternatives')
-rw-r--r-- | completions/update-alternatives | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/completions/update-alternatives b/completions/update-alternatives new file mode 100644 index 00000000..ebed294d --- /dev/null +++ b/completions/update-alternatives @@ -0,0 +1,100 @@ +# bash completion for update-alternatives + +have update-alternatives && { +_installed_alternatives() +{ + local admindir + # find the admin dir + for i in alternatives dpkg/alternatives rpm/alternatives; do + [ -d /var/lib/$i ] && admindir=/var/lib/$i && break + done + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --admindir ]]; then + admindir=${COMP_WORDS[i+1]} + break + fi + done + COMPREPLY=( $( compgen -W '$( command ls $admindir )' -- "$cur" ) ) +} + +_update_alternatives() +{ + local cur prev mode args i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --altdir|--admindir) + _filedir -d + return 0 + ;; + --help|--usage|--version) + return 0 + ;; + esac + + # find which mode to use and how many real args used so far + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all|set) ]]; then + mode=${COMP_WORDS[i]} + args=$(($COMP_CWORD - i)) + break + fi + done + + case $mode in + --install) + case $args in + 1|3) + _filedir + ;; + 2) + _installed_alternatives + ;; + 4) + # priority - no completions + ;; + *) + case $((args % 4)) in + 0|2) + _filedir + ;; + 1) + COMPREPLY=( $( compgen -W '--slave' -- "$cur" ) ) + ;; + 3) + _installed_alternatives + ;; + esac + esac + ;; + --remove|--set) + case $args in + 1) + _installed_alternatives + ;; + 2) + _filedir + ;; + esac + ;; + --auto|--remove-all|--display|--config) + _installed_alternatives + ;; + *) + COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \ + --altdir --admindir --install --remove --auto --display \ + --config --set' -- "$cur" ) ) + esac +} +complete -F _update_alternatives update-alternatives alternatives +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |