1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
# 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
|