Skip to content

Commit ef02759

Browse files
committed
Merge pull request #871 from albers/bash-completion
Rebrand bash completion script
2 parents df3221d + f1e4fb7 commit ef02759

1 file changed

Lines changed: 57 additions & 61 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
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
#
@@ -12,76 +12,72 @@
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

Comments
 (0)