home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / etc / bash_completion.d / update-alternatives < prev    next >
Encoding:
Text File  |  2010-11-16  |  2.6 KB  |  101 lines

  1. # bash completion for update-alternatives
  2.  
  3. have update-alternatives && {
  4. _installed_alternatives()
  5. {
  6.     local admindir
  7.     # find the admin dir
  8.     for i in alternatives dpkg/alternatives rpm/alternatives; do
  9.         [ -d /var/lib/$i ] && admindir=/var/lib/$i && break
  10.     done
  11.     for (( i=1; i < COMP_CWORD; i++ )); do
  12.         if [[ "${COMP_WORDS[i]}" == --admindir ]]; then
  13.             admindir=${COMP_WORDS[i+1]}
  14.             break
  15.         fi
  16.     done
  17.     COMPREPLY=( $( compgen -W '$( command ls $admindir )' -- "$cur" ) )
  18. }
  19.  
  20. _update_alternatives()
  21. {
  22.     local cur prev mode args i
  23.  
  24.     COMPREPLY=()
  25.     _get_comp_words_by_ref cur prev
  26.  
  27.     case $prev in
  28.         --altdir|--admindir)
  29.             _filedir -d
  30.             return 0
  31.             ;;
  32.         --help|--usage|--version)
  33.             return 0
  34.             ;;
  35.     esac
  36.  
  37.     # find which mode to use and how many real args used so far
  38.     for (( i=1; i < COMP_CWORD; i++ )); do
  39.         if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all|set) ]]; then
  40.             mode=${COMP_WORDS[i]}
  41.             args=$(($COMP_CWORD - i))
  42.             break
  43.         fi
  44.     done
  45.  
  46.     case $mode in
  47.         --install)
  48.             case $args in
  49.                 1|3)
  50.                     _filedir
  51.                     ;;
  52.                 2)
  53.                     _installed_alternatives
  54.                     ;;
  55.                 4)
  56.                     # priority - no completions
  57.                     ;;
  58.                 *)
  59.                     case $((args % 4)) in
  60.                         0|2)
  61.                             _filedir
  62.                             ;;
  63.                         1)
  64.                             COMPREPLY=( $( compgen -W '--slave' -- "$cur" ) )
  65.                             ;;
  66.                         3)
  67.                             _installed_alternatives
  68.                             ;;
  69.                     esac
  70.             esac
  71.             ;;
  72.         --remove|--set)
  73.             case $args in
  74.                 1)
  75.                     _installed_alternatives
  76.                     ;;
  77.                 2)
  78.                     _filedir
  79.                     ;;
  80.             esac
  81.             ;;
  82.         --auto|--remove-all|--display|--config)
  83.             _installed_alternatives
  84.             ;;
  85.         *)
  86.             COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \
  87.                 --altdir --admindir --install --remove --auto --display \
  88.                 --config --set' -- "$cur" ) )
  89.     esac
  90. }
  91. complete -F _update_alternatives update-alternatives alternatives
  92. }
  93.  
  94. # Local variables:
  95. # mode: shell-script
  96. # sh-basic-offset: 4
  97. # sh-indent-comment: t
  98. # indent-tabs-mode: nil
  99. # End:
  100. # ex: ts=4 sw=4 et filetype=sh
  101.