33# TODO:API: rename per conventions, rework to use vars rather than outputting
44_dictdata ()
55{
6- # shellcheck disable=SC2086
7- dict $host $port $1 2> /dev/null | command sed -ne \
6+ dict " $@ " 2> /dev/null | command sed -ne \
87 ' s/^[[:blank:]]\{1,\}\([^[:blank:]]*\).*$/\1/p'
98}
109
@@ -13,23 +12,24 @@ _comp_cmd_dict()
1312 local cur prev words cword comp_args
1413 _comp_initialize -- " $@ " || return
1514
16- local host port db i
15+ local -a dict_options=()
16+ local host=" " port=" " db i
1717
1818 local noargopts=' !(-*|*[hpdis]*)'
1919 for (( i = 1 ; i < cword; i++ )) ; do
2020 # shellcheck disable=SC2254
2121 case ${words[i]} in
2222 --host | -${noargopts} h)
2323 host=${words[++i]}
24- [[ $host ]] && host= " -h $host "
24+ [[ $host ]] && dict_options+=( -h " $host " )
2525 ;;
2626 --port | -${noargopts} p)
2727 port=${words[++i]}
28- [[ $port ]] && port= " -p $port "
28+ [[ $port ]] && dict_options+=( -p " $port " )
2929 ;;
3030 --database | -${noargopts} d)
3131 db=${words[++i]}
32- [[ $db ]] && host= " -d $db "
32+ [[ $db ]] && dict_options+=( -d " $db " )
3333 ;;
3434 esac
3535 done
@@ -42,11 +42,11 @@ _comp_cmd_dict()
4242 # shellcheck disable=SC2254
4343 case $prev in
4444 --database | -info | -${noargopts} [di])
45- _comp_compgen_split -- " $( _dictdata -D) "
45+ _comp_compgen_split -- " $( _dictdata ${dict_options[@]+ " ${dict_options[@]} " } -D) "
4646 return
4747 ;;
4848 --strategy | -${noargopts} s)
49- _comp_compgen_split -- " $( _dictdata -S) "
49+ _comp_compgen_split -- " $( _dictdata ${dict_options[@]+ " ${dict_options[@]} " } -S) "
5050 return
5151 ;;
5252 esac
0 commit comments