11#! bash
22#
3- # bash completion for fig commands
3+ # bash completion for docker-compose
44#
55# This work is based on the completion for the docker command.
66#
1212# To enable the completions either:
1313# - place this file in /etc/bash_completion.d
1414# or
15- # - copy this file and add the line below to your .bashrc after
16- # bash completion features are loaded
17- # . docker.bash
18- #
19- # Note:
20- # Some completions require the current user to have sufficient permissions
21- # to execute the docker command.
15+ # - copy this file to e.g. ~/.docker-compose-completion.sh and add the line
16+ # below to your .bashrc after bash completion features are loaded
17+ # . ~/.docker-compose-completion.sh
2218
2319
24- # Extracts all service names from the figfile .
25- ___fig_all_services_in_figfile () {
26- awk -F: ' /^[a-zA-Z0-9]/{print $1}' " ${fig_file :- fig .yml} "
20+ # Extracts all service names from docker-compose.yml .
21+ ___docker-compose_all_services_in_compose_file () {
22+ awk -F: ' /^[a-zA-Z0-9]/{print $1}' " ${compose_file :- docker-compose .yml} "
2723}
2824
2925# All services, even those without an existing container
30- __fig_services_all () {
31- COMPREPLY=( $( compgen -W " $( ___fig_all_services_in_figfile ) " -- " $cur " ) )
26+ __docker-compose_services_all () {
27+ COMPREPLY=( $( compgen -W " $( ___docker-compose_all_services_in_compose_file ) " -- " $cur " ) )
3228}
3329
34- # All services that have an entry with the given key in their figfile section
35- ___fig_services_with_key () {
30+ # All services that have an entry with the given key in their docker-compose.yml section
31+ ___docker-compose_services_with_key () {
3632 # flatten sections to one line, then filter lines containing the key and return section name.
37- awk ' /^[a-zA-Z0-9]/{printf "\n"};{printf $0;next;}' fig .yml | awk -F: -v key=" : +$1 :" ' $0 ~ key {print $1}'
33+ awk ' /^[a-zA-Z0-9]/{printf "\n"};{printf $0;next;}' " ${compose_file :- docker-compose .yml} " | awk -F: -v key=" : +$1 :" ' $0 ~ key {print $1}'
3834}
3935
4036# All services that are defined by a Dockerfile reference
41- __fig_services_from_build () {
42- COMPREPLY=( $( compgen -W " $( ___fig_services_with_key build) " -- " $cur " ) )
37+ __docker-compose_services_from_build () {
38+ COMPREPLY=( $( compgen -W " $( ___docker-compose_services_with_key build) " -- " $cur " ) )
4339}
4440
4541# All services that are defined by an image
46- __fig_services_from_image () {
47- COMPREPLY=( $( compgen -W " $( ___fig_services_with_key image) " -- " $cur " ) )
42+ __docker-compose_services_from_image () {
43+ COMPREPLY=( $( compgen -W " $( ___docker-compose_services_with_key image) " -- " $cur " ) )
4844}
4945
5046# The services for which containers have been created, optionally filtered
5147# by a boolean expression passed in as argument.
52- __fig_services_with () {
48+ __docker-compose_services_with () {
5349 local containers names
54- containers=" $( fig 2> /dev/null ${fig_file : +-f $fig_file } ${fig_project : +-p $fig_project } ps -q) "
50+ containers=" $( docker-compose 2> /dev/null ${compose_file : +-f $compose_file } ${compose_project : +-p $compose_project } ps -q) "
5551 names=( $( docker 2> /dev/null inspect --format " {{if ${1:- true} }} {{ .Name }} {{end}}" $containers ) )
5652 names=( ${names[@]% _* } ) # strip trailing numbers
5753 names=( ${names[@]#* _} ) # strip project name
5854 COMPREPLY=( $( compgen -W " ${names[*]} " -- " $cur " ) )
5955}
6056
6157# The services for which at least one running container exists
62- __fig_services_running () {
63- __fig_services_with ' .State.Running'
58+ __docker-compose_services_running () {
59+ __docker-compose_services_with ' .State.Running'
6460}
6561
6662# The services for which at least one stopped container exists
67- __fig_services_stopped () {
68- __fig_services_with ' not .State.Running'
63+ __docker-compose_services_stopped () {
64+ __docker-compose_services_with ' not .State.Running'
6965}
7066
7167
72- _fig_build () {
68+ _docker-compose_build () {
7369 case " $cur " in
7470 -* )
7571 COMPREPLY=( $( compgen -W " --no-cache" -- " $cur " ) )
7672 ;;
7773 * )
78- __fig_services_from_build
74+ __docker-compose_services_from_build
7975 ;;
8076 esac
8177}
8278
8379
84- _fig_fig () {
80+ _docker-compose_docker-compose () {
8581 case " $prev " in
8682 --file|-f)
8783 _filedir
@@ -103,12 +99,12 @@ _fig_fig() {
10399}
104100
105101
106- _fig_help () {
102+ _docker-compose_help () {
107103 COMPREPLY=( $( compgen -W " ${commands[*]} " -- " $cur " ) )
108104}
109105
110106
111- _fig_kill () {
107+ _docker-compose_kill () {
112108 case " $prev " in
113109 -s)
114110 COMPREPLY=( $( compgen -W " SIGHUP SIGINT SIGKILL SIGUSR1 SIGUSR2" -- " $( echo $cur | tr ' [:lower:]' ' [:upper:]' ) " ) )
@@ -121,25 +117,25 @@ _fig_kill() {
121117 COMPREPLY=( $( compgen -W " -s" -- " $cur " ) )
122118 ;;
123119 * )
124- __fig_services_running
120+ __docker-compose_services_running
125121 ;;
126122 esac
127123}
128124
129125
130- _fig_logs () {
126+ _docker-compose_logs () {
131127 case " $cur " in
132128 -* )
133129 COMPREPLY=( $( compgen -W " --no-color" -- " $cur " ) )
134130 ;;
135131 * )
136- __fig_services_all
132+ __docker-compose_services_all
137133 ;;
138134 esac
139135}
140136
141137
142- _fig_port () {
138+ _docker-compose_port () {
143139 case " $prev " in
144140 --protocol)
145141 COMPREPLY=( $( compgen -W " tcp udp" -- " $cur " ) )
@@ -155,54 +151,54 @@ _fig_port() {
155151 COMPREPLY=( $( compgen -W " --protocol --index" -- " $cur " ) )
156152 ;;
157153 * )
158- __fig_services_all
154+ __docker-compose_services_all
159155 ;;
160156 esac
161157}
162158
163159
164- _fig_ps () {
160+ _docker-compose_ps () {
165161 case " $cur " in
166162 -* )
167163 COMPREPLY=( $( compgen -W " -q" -- " $cur " ) )
168164 ;;
169165 * )
170- __fig_services_all
166+ __docker-compose_services_all
171167 ;;
172168 esac
173169}
174170
175171
176- _fig_pull () {
172+ _docker-compose_pull () {
177173 case " $cur " in
178174 -* )
179175 COMPREPLY=( $( compgen -W " --allow-insecure-ssl" -- " $cur " ) )
180176 ;;
181177 * )
182- __fig_services_from_image
178+ __docker-compose_services_from_image
183179 ;;
184180 esac
185181}
186182
187183
188- _fig_restart () {
189- __fig_services_running
184+ _docker-compose_restart () {
185+ __docker-compose_services_running
190186}
191187
192188
193- _fig_rm () {
189+ _docker-compose_rm () {
194190 case " $cur " in
195191 -* )
196192 COMPREPLY=( $( compgen -W " --force -v" -- " $cur " ) )
197193 ;;
198194 * )
199- __fig_services_stopped
195+ __docker-compose_services_stopped
200196 ;;
201197 esac
202198}
203199
204200
205- _fig_run () {
201+ _docker-compose_run () {
206202 case " $prev " in
207203 -e)
208204 COMPREPLY=( $( compgen -e -- " $cur " ) )
@@ -219,48 +215,48 @@ _fig_run() {
219215 COMPREPLY=( $( compgen -W " --allow-insecure-ssl -d --entrypoint -e --no-deps --rm -T" -- " $cur " ) )
220216 ;;
221217 * )
222- __fig_services_all
218+ __docker-compose_services_all
223219 ;;
224220 esac
225221}
226222
227223
228- _fig_scale () {
224+ _docker-compose_scale () {
229225 case " $prev " in
230226 =)
231227 COMPREPLY=(" $cur " )
232228 ;;
233229 * )
234- COMPREPLY=( $( compgen -S " =" -W " $( ___fig_all_services_in_figfile ) " -- " $cur " ) )
230+ COMPREPLY=( $( compgen -S " =" -W " $( ___docker-compose_all_services_in_compose_file ) " -- " $cur " ) )
235231 compopt -o nospace
236232 ;;
237233 esac
238234}
239235
240236
241- _fig_start () {
242- __fig_services_stopped
237+ _docker-compose_start () {
238+ __docker-compose_services_stopped
243239}
244240
245241
246- _fig_stop () {
247- __fig_services_running
242+ _docker-compose_stop () {
243+ __docker-compose_services_running
248244}
249245
250246
251- _fig_up () {
247+ _docker-compose_up () {
252248 case " $cur " in
253249 -* )
254250 COMPREPLY=( $( compgen -W " --allow-insecure-ssl -d --no-build --no-color --no-deps --no-recreate" -- " $cur " ) )
255251 ;;
256252 * )
257- __fig_services_all
253+ __docker-compose_services_all
258254 ;;
259255 esac
260256}
261257
262258
263- _fig () {
259+ _docker-compose () {
264260 local commands=(
265261 build
266262 help
@@ -284,18 +280,18 @@ _fig() {
284280
285281 # search subcommand and invoke its handler.
286282 # special treatment of some top-level options
287- local command=' fig '
283+ local command=' docker-compose '
288284 local counter=1
289- local fig_file fig_project
285+ local compose_file compose_project
290286 while [ $counter -lt $cword ]; do
291287 case " ${words[$counter]} " in
292288 -f|--file)
293289 (( counter++ ))
294- fig_file =" ${words[$counter]} "
290+ compose_file =" ${words[$counter]} "
295291 ;;
296292 -p|--project-name)
297293 (( counter++ ))
298- fig_project =" ${words[$counter]} "
294+ compose_project =" ${words[$counter]} "
299295 ;;
300296 -* )
301297 ;;
@@ -307,10 +303,10 @@ _fig() {
307303 (( counter++ ))
308304 done
309305
310- local completions_func=_fig_ ${command}
306+ local completions_func=_docker-compose_ ${command}
311307 declare -F $completions_func > /dev/null && $completions_func
312308
313309 return 0
314310}
315311
316- complete -F _fig fig
312+ complete -F _docker-compose docker-compose
0 commit comments