Newer
Older
dub_jkp / scripts / bash-completion / dub.bash
@Martin Nowak Martin Nowak on 5 Jan 2015 1 KB add clean-caches to bash completion
  1. # dub(1) completion -*- shell-script -*-
  2.  
  3. _dub()
  4. {
  5. local cur prev words cword split
  6. _init_completion -s || return
  7.  
  8. local creation_commands
  9. creation_commands='init run build test generate describe clean dustmite'
  10.  
  11. local management_commands
  12. management_commands='fetch remove upgrade add-path remove-path add-local remove-local list add-override remove-override list-overrides clean-caches'
  13.  
  14. case "$prev" in
  15. -h|--help)
  16. return 0
  17. ;;
  18. esac
  19.  
  20. $split && return 0
  21.  
  22. # Use -h -v -q because lack of comma separation between -h and --help
  23. local common_options
  24. common_options='-h -v -q';
  25.  
  26. local packages
  27. packages=$(dub list| awk '/^[[:space:]]+/ { print $1 }')
  28.  
  29. if [[ $cword -eq 1 ]] ; then # if one argument given
  30. if [[ "$cur" == -* ]]; then
  31. COMPREPLY=( $( compgen -W '$common_options $( _parse_help "$1" )' -- "$cur" ) )
  32. else
  33. COMPREPLY=( $( compgen -W "$creation_commands $management_commands" -- "$cur" ) )
  34. fi
  35. else
  36. local command=${words[1]}; # use $prev instead?
  37.  
  38. local specific_options
  39. specific_options=$( "$1" $command --help 2>/dev/null | _parse_help - )
  40.  
  41. case $command in
  42. init | add-path | remove-path | add-local | remove-local | dustmite )
  43. COMPREPLY=( $( compgen -d -W '$common_options $specific_options' -- "$cur" ) )
  44. ;;
  45. run | build | test | generate | describe | clean | upgrade | add-override | remove-override )
  46. COMPREPLY=( $( compgen -W '$packages $common_options $specific_options' -- "$cur" ) )
  47. ;;
  48. *)
  49. COMPREPLY=( $( compgen -W '$common_options $specific_options' -- "$cur" ) )
  50. ;;
  51. esac
  52. fi
  53.  
  54. [[ $COMPREPLY == *= ]] && compopt -o nospace
  55. return
  56.  
  57. # NOTE: Disabled for now
  58. # _filedir
  59. } &&
  60. complete -F _dub dub