- # dub(1) completion -*- shell-script -*-
-
- _dub()
- {
- local cur prev words cword split
- _init_completion -s || return
-
- local creation_commands
- creation_commands='init run build test generate describe clean dustmite'
-
- local management_commands
- management_commands='fetch remove upgrade add-path remove-path add-local remove-local list add-override remove-override list-overrides clean-caches'
-
- case "$prev" in
- -h|--help)
- return 0
- ;;
- esac
-
- $split && return 0
-
- # Use -h -v -q because lack of comma separation between -h and --help
- local common_options
- common_options='-h -v -q';
-
- local packages
- packages=$(dub list| awk '/^[[:space:]]+/ { print $1 }')
-
- if [[ $cword -eq 1 ]] ; then # if one argument given
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '$common_options $( _parse_help "$1" )' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W "$creation_commands $management_commands" -- "$cur" ) )
- fi
- else
- local command=${words[1]}; # use $prev instead?
-
- local specific_options
- specific_options=$( "$1" $command --help 2>/dev/null | _parse_help - )
-
- case $command in
- init | add-path | remove-path | add-local | remove-local | dustmite )
- COMPREPLY=( $( compgen -d -W '$common_options $specific_options' -- "$cur" ) )
- ;;
- run | build | test | generate | describe | clean | upgrade | add-override | remove-override )
- COMPREPLY=( $( compgen -W '$packages $common_options $specific_options' -- "$cur" ) )
- ;;
- *)
- COMPREPLY=( $( compgen -W '$common_options $specific_options' -- "$cur" ) )
- ;;
- esac
- fi
-
- [[ $COMPREPLY == *= ]] && compopt -o nospace
- return
-
- # NOTE: Disabled for now
- # _filedir
- } &&
- complete -F _dub dub