|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | 3 | _cliname() { |
4 | | - local word cur cmd cmd_cur opts |
| 4 | + local word cmd opts cur cmd_cur opts_cur |
5 | 5 | COMPREPLY=() |
6 | | - cur=0 |
7 | | - cmd_cur=0 |
8 | 6 | cmd="" |
9 | 7 | opts="" |
| 8 | + cur=0 |
| 9 | + cmd_cur=0 |
| 10 | + opts_cur=0 |
10 | 11 |
|
11 | 12 | for word in ${COMP_WORDS[@]}; do |
12 | 13 | case "${cmd},${word}" in |
13 | 14 | ",$1") |
14 | 15 | cmd="_cliname" |
15 | | - cur=$(( cur + 1 )) |
| 16 | + cur=$(( cur + opts_cur + 1 )) |
16 | 17 | ;; |
17 | 18 |
|
18 | 19 | _cliname,list|_cliname,ls) |
19 | 20 | cmd="_cliname_list" |
20 | | - cur=$(( cur + 1 )) |
| 21 | + cur=$(( cur + opts_cur + 1 )) |
21 | 22 | ;; |
22 | 23 |
|
23 | 24 | _cliname,cd) |
24 | 25 | cmd="_cliname_cd" |
25 | | - cur=$(( cur + 1 )) |
| 26 | + cur=$(( cur + opts_cur + 1 )) |
26 | 27 | ;; |
27 | 28 |
|
28 | 29 | _cliname,test) |
29 | 30 | cmd="_cliname_test" |
30 | | - cur=$(( cur + 1 )) |
| 31 | + cur=$(( cur + opts_cur + 1 )) |
31 | 32 | ;; |
32 | 33 |
|
33 | 34 | _cliname_test,rubocop) |
34 | 35 | cmd="_cliname_test_rubocop" |
35 | | - cur=$(( cur + 1 )) |
| 36 | + cur=$(( cur + opts_cur + 1 )) |
36 | 37 | ;; |
37 | 38 |
|
38 | 39 | _cliname_test,pytest) |
39 | 40 | cmd="_cliname_test_pytest" |
40 | | - cur=$(( cur + 1 )) |
| 41 | + cur=$(( cur + opts_cur + 1 )) |
41 | 42 | ;; |
42 | 43 |
|
43 | 44 | *) |
| 45 | + opts_cur=$(( opts_cur + 1 )) |
44 | 46 | ;; |
45 | 47 | esac |
46 | 48 | done |
47 | 49 |
|
48 | 50 | case "${cmd}" in |
49 | 51 | _cliname) |
50 | | - opts="list ls cd test --verbose --no-verbose --version -V --config --help" |
51 | | - if [[ ${COMP_CWORD} -eq 1 ]] ; then |
| 52 | + if [[ ${COMP_WORDS[COMP_CWORD]} == -* ]] ; then |
| 53 | + opts="--verbose --no-verbose --version -V --config --help" |
| 54 | + COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
| 55 | + return 0 |
| 56 | + elif [ $cur -eq $COMP_CWORD ] ; then |
| 57 | + opts="list ls cd test" |
52 | 58 | COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
53 | 59 | return 0 |
54 | 60 | fi |
@@ -93,8 +99,8 @@ _cliname() { |
93 | 99 | ;; |
94 | 100 |
|
95 | 101 | _cliname_list) |
96 | | - opts="--all -a" |
97 | 102 | if [[ ${COMP_WORDS[COMP_CWORD]} == -* ]] ; then |
| 103 | + opts="--all -a" |
98 | 104 | COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
99 | 105 | return 0 |
100 | 106 | fi |
@@ -130,8 +136,8 @@ _cliname() { |
130 | 136 | ;; |
131 | 137 |
|
132 | 138 | _cliname_cd) |
133 | | - opts="-P" |
134 | 139 | if [[ ${COMP_WORDS[COMP_CWORD]} == -* ]] ; then |
| 140 | + opts="-P" |
135 | 141 | COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
136 | 142 | return 0 |
137 | 143 | fi |
@@ -166,8 +172,12 @@ _cliname() { |
166 | 172 | ;; |
167 | 173 |
|
168 | 174 | _cliname_test) |
169 | | - opts="rubocop pytest" |
170 | | - if [[ ${COMP_CWORD} -eq 2 ]] ; then |
| 175 | + if [[ ${COMP_WORDS[COMP_CWORD]} == -* ]] ; then |
| 176 | + opts="" |
| 177 | + COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
| 178 | + return 0 |
| 179 | + elif [ $cur -eq $COMP_CWORD ] ; then |
| 180 | + opts="rubocop pytest" |
171 | 181 | COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) |
172 | 182 | return 0 |
173 | 183 | fi |
|
0 commit comments