• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1_my-app() {
2    local i cur prev opts cmd
3    COMPREPLY=()
4    cur="${COMP_WORDS[COMP_CWORD]}"
5    prev="${COMP_WORDS[COMP_CWORD-1]}"
6    cmd=""
7    opts=""
8
9    for i in ${COMP_WORDS[@]}
10    do
11        case "${cmd},${i}" in
12            ",$1")
13                cmd="my__app"
14                ;;
15            my__app,help)
16                cmd="my__app__help"
17                ;;
18            my__app,some_cmd)
19                cmd="my__app__some_cmd"
20                ;;
21            my__app,some_cmd_alias)
22                cmd="my__app__some_cmd"
23                ;;
24            my__app,test)
25                cmd="my__app__test"
26                ;;
27            my__app__help,help)
28                cmd="my__app__help__help"
29                ;;
30            my__app__help,some_cmd)
31                cmd="my__app__help__some_cmd"
32                ;;
33            my__app__help,test)
34                cmd="my__app__help__test"
35                ;;
36            my__app__help__some_cmd,sub_cmd)
37                cmd="my__app__help__some_cmd__sub_cmd"
38                ;;
39            my__app__some_cmd,help)
40                cmd="my__app__some_cmd__help"
41                ;;
42            my__app__some_cmd,sub_cmd)
43                cmd="my__app__some_cmd__sub_cmd"
44                ;;
45            my__app__some_cmd__help,help)
46                cmd="my__app__some_cmd__help__help"
47                ;;
48            my__app__some_cmd__help,sub_cmd)
49                cmd="my__app__some_cmd__help__sub_cmd"
50                ;;
51            *)
52                ;;
53        esac
54    done
55
56    case "${cmd}" in
57        my__app)
58            opts="-C -c -h -V --conf --config --help --version [file] first second test some_cmd help"
59            if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
60                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
61                return 0
62            fi
63            case "${prev}" in
64                *)
65                    COMPREPLY=()
66                    ;;
67            esac
68            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
69            return 0
70            ;;
71        my__app__help)
72            opts="test some_cmd help"
73            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
74                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
75                return 0
76            fi
77            case "${prev}" in
78                *)
79                    COMPREPLY=()
80                    ;;
81            esac
82            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
83            return 0
84            ;;
85        my__app__help__help)
86            opts=""
87            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
88                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
89                return 0
90            fi
91            case "${prev}" in
92                *)
93                    COMPREPLY=()
94                    ;;
95            esac
96            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
97            return 0
98            ;;
99        my__app__help__some_cmd)
100            opts="sub_cmd"
101            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
102                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
103                return 0
104            fi
105            case "${prev}" in
106                *)
107                    COMPREPLY=()
108                    ;;
109            esac
110            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
111            return 0
112            ;;
113        my__app__help__some_cmd__sub_cmd)
114            opts=""
115            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
116                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
117                return 0
118            fi
119            case "${prev}" in
120                *)
121                    COMPREPLY=()
122                    ;;
123            esac
124            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
125            return 0
126            ;;
127        my__app__help__test)
128            opts=""
129            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
130                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
131                return 0
132            fi
133            case "${prev}" in
134                *)
135                    COMPREPLY=()
136                    ;;
137            esac
138            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
139            return 0
140            ;;
141        my__app__some_cmd)
142            opts="-h -V --help --version sub_cmd help"
143            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
144                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
145                return 0
146            fi
147            case "${prev}" in
148                *)
149                    COMPREPLY=()
150                    ;;
151            esac
152            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
153            return 0
154            ;;
155        my__app__some_cmd__help)
156            opts="sub_cmd help"
157            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
158                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
159                return 0
160            fi
161            case "${prev}" in
162                *)
163                    COMPREPLY=()
164                    ;;
165            esac
166            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
167            return 0
168            ;;
169        my__app__some_cmd__help__help)
170            opts=""
171            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
172                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
173                return 0
174            fi
175            case "${prev}" in
176                *)
177                    COMPREPLY=()
178                    ;;
179            esac
180            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
181            return 0
182            ;;
183        my__app__some_cmd__help__sub_cmd)
184            opts=""
185            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
186                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
187                return 0
188            fi
189            case "${prev}" in
190                *)
191                    COMPREPLY=()
192                    ;;
193            esac
194            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
195            return 0
196            ;;
197        my__app__some_cmd__sub_cmd)
198            opts="-h -V --config --help --version"
199            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
200                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
201                return 0
202            fi
203            case "${prev}" in
204                --config)
205                    COMPREPLY=($(compgen -W "Lest quotes, aren't escaped. Second to trigger display of options" -- "${cur}"))
206                    return 0
207                    ;;
208                *)
209                    COMPREPLY=()
210                    ;;
211            esac
212            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
213            return 0
214            ;;
215        my__app__test)
216            opts="-h -V --case --help --version"
217            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
218                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
219                return 0
220            fi
221            case "${prev}" in
222                --case)
223                    COMPREPLY=($(compgen -f "${cur}"))
224                    return 0
225                    ;;
226                *)
227                    COMPREPLY=()
228                    ;;
229            esac
230            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
231            return 0
232            ;;
233    esac
234}
235
236complete -F _my-app -o bashdefault -o default my-app
237