Merge pull request #27719 from albers/completion-image
Add bash completion for new `docker image` command family Upstream-commit: 362eb4cfbb09b5dc0fe648360a2e6d0546bf6613 Component: engine
This commit is contained in:
@ -825,71 +825,7 @@ _docker_attach() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_build() {
|
_docker_build() {
|
||||||
local options_with_args="
|
_docker_image_build
|
||||||
--build-arg
|
|
||||||
--cgroup-parent
|
|
||||||
--cpuset-cpus
|
|
||||||
--cpuset-mems
|
|
||||||
--cpu-shares -c
|
|
||||||
--cpu-period
|
|
||||||
--cpu-quota
|
|
||||||
--file -f
|
|
||||||
--isolation
|
|
||||||
--label
|
|
||||||
--memory -m
|
|
||||||
--memory-swap
|
|
||||||
--shm-size
|
|
||||||
--tag -t
|
|
||||||
--ulimit
|
|
||||||
"
|
|
||||||
|
|
||||||
local boolean_options="
|
|
||||||
--compress
|
|
||||||
--disable-content-trust=false
|
|
||||||
--force-rm
|
|
||||||
--help
|
|
||||||
--no-cache
|
|
||||||
--pull
|
|
||||||
--quiet -q
|
|
||||||
--rm
|
|
||||||
"
|
|
||||||
|
|
||||||
local all_options="$options_with_args $boolean_options"
|
|
||||||
|
|
||||||
case "$prev" in
|
|
||||||
--build-arg)
|
|
||||||
COMPREPLY=( $( compgen -e -- "$cur" ) )
|
|
||||||
__docker_nospace
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
--file|-f)
|
|
||||||
_filedir
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
--isolation)
|
|
||||||
__docker_complete_isolation
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
--tag|-t)
|
|
||||||
__docker_complete_image_repos_and_tags
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
$(__docker_to_extglob "$options_with_args") )
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$cur" in
|
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "$all_options" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
local counter=$( __docker_pos_first_nonflag $( __docker_to_alternatives "$options_with_args" ) )
|
|
||||||
if [ $cword -eq $counter ]; then
|
|
||||||
_filedir -d
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1085,34 +1021,7 @@ _docker_container_export() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_container_inspect() {
|
_docker_container_inspect() {
|
||||||
case "$prev" in
|
_docker_inspect --type container
|
||||||
--format|-f)
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
--type)
|
|
||||||
COMPREPLY=( $( compgen -W "image container" -- "$cur" ) )
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$cur" in
|
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--format -f --help --size -s --type" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
case $(__docker_value_of_option --type) in
|
|
||||||
'')
|
|
||||||
__docker_complete_containers_and_images
|
|
||||||
;;
|
|
||||||
container)
|
|
||||||
__docker_complete_containers_all
|
|
||||||
;;
|
|
||||||
image)
|
|
||||||
__docker_complete_images
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_container_kill() {
|
_docker_container_kill() {
|
||||||
@ -2020,6 +1929,112 @@ _docker_help() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_history() {
|
_docker_history() {
|
||||||
|
_docker_image_history
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_docker_image() {
|
||||||
|
local subcommands="
|
||||||
|
build
|
||||||
|
history
|
||||||
|
import
|
||||||
|
inspect
|
||||||
|
load
|
||||||
|
ls
|
||||||
|
prune
|
||||||
|
pull
|
||||||
|
push
|
||||||
|
rm
|
||||||
|
save
|
||||||
|
tag
|
||||||
|
"
|
||||||
|
local aliases="
|
||||||
|
images
|
||||||
|
list
|
||||||
|
remove
|
||||||
|
rmi
|
||||||
|
"
|
||||||
|
__docker_subcommands "$subcommands $aliases" && return
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_build() {
|
||||||
|
local options_with_args="
|
||||||
|
--build-arg
|
||||||
|
--cgroup-parent
|
||||||
|
--cpuset-cpus
|
||||||
|
--cpuset-mems
|
||||||
|
--cpu-shares -c
|
||||||
|
--cpu-period
|
||||||
|
--cpu-quota
|
||||||
|
--file -f
|
||||||
|
--isolation
|
||||||
|
--label
|
||||||
|
--memory -m
|
||||||
|
--memory-swap
|
||||||
|
--shm-size
|
||||||
|
--tag -t
|
||||||
|
--ulimit
|
||||||
|
"
|
||||||
|
|
||||||
|
local boolean_options="
|
||||||
|
--compress
|
||||||
|
--disable-content-trust=false
|
||||||
|
--force-rm
|
||||||
|
--help
|
||||||
|
--no-cache
|
||||||
|
--pull
|
||||||
|
--quiet -q
|
||||||
|
--rm
|
||||||
|
"
|
||||||
|
|
||||||
|
local all_options="$options_with_args $boolean_options"
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
--build-arg)
|
||||||
|
COMPREPLY=( $( compgen -e -- "$cur" ) )
|
||||||
|
__docker_nospace
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--file|-f)
|
||||||
|
_filedir
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--isolation)
|
||||||
|
__docker_complete_isolation
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--tag|-t)
|
||||||
|
__docker_complete_image_repos_and_tags
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
$(__docker_to_extglob "$options_with_args") )
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "$all_options" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local counter=$( __docker_pos_first_nonflag $( __docker_to_alternatives "$options_with_args" ) )
|
||||||
|
if [ $cword -eq $counter ]; then
|
||||||
|
_filedir -d
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_history() {
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
-*)
|
-*)
|
||||||
COMPREPLY=( $( compgen -W "--help --human=false -H=false --no-trunc --quiet -q" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "--help --human=false -H=false --no-trunc --quiet -q" -- "$cur" ) )
|
||||||
@ -2033,7 +2048,60 @@ _docker_history() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_images() {
|
_docker_image_images() {
|
||||||
|
_docker_image_ls
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_import() {
|
||||||
|
case "$prev" in
|
||||||
|
--change|-c|--message|-m)
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--change -c --help --message -m" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local counter=$(__docker_pos_first_nonflag '--change|-c|--message|-m')
|
||||||
|
if [ $cword -eq $counter ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
(( counter++ ))
|
||||||
|
|
||||||
|
if [ $cword -eq $counter ]; then
|
||||||
|
__docker_complete_image_repos_and_tags
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_inspect() {
|
||||||
|
_docker_inspect --type image
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_load() {
|
||||||
|
case "$prev" in
|
||||||
|
--input|-i)
|
||||||
|
_filedir
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--help --input -i --quiet -q" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_list() {
|
||||||
|
_docker_image_ls
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_ls() {
|
||||||
local key=$(__docker_map_key_of_current_option '--filter|-f')
|
local key=$(__docker_map_key_of_current_option '--filter|-f')
|
||||||
case "$key" in
|
case "$key" in
|
||||||
before)
|
before)
|
||||||
@ -2079,20 +2147,94 @@ _docker_images() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_import() {
|
# TODO new command
|
||||||
|
_docker_image_prune() {
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_pull() {
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--all-tags -a --disable-content-trust=false --help" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local counter=$(__docker_pos_first_nonflag)
|
||||||
|
if [ $cword -eq $counter ]; then
|
||||||
|
for arg in "${COMP_WORDS[@]}"; do
|
||||||
|
case "$arg" in
|
||||||
|
--all-tags|-a)
|
||||||
|
__docker_complete_image_repos
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
__docker_complete_image_repos_and_tags
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_push() {
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--disable-content-trust=false --help" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local counter=$(__docker_pos_first_nonflag)
|
||||||
|
if [ $cword -eq $counter ]; then
|
||||||
|
__docker_complete_image_repos_and_tags
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_remove() {
|
||||||
|
_docker_image_rm
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_rm() {
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--force -f --help --no-prune" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
__docker_complete_images
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_rmi() {
|
||||||
|
_docker_image_rm
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_save() {
|
||||||
case "$prev" in
|
case "$prev" in
|
||||||
--change|-c|--message|-m)
|
--output|-o)
|
||||||
|
_filedir
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case "$cur" in
|
case "$cur" in
|
||||||
-*)
|
-*)
|
||||||
COMPREPLY=( $( compgen -W "--change -c --help --message -m" -- "$cur" ) )
|
COMPREPLY=( $( compgen -W "--help --output -o" -- "$cur" ) )
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
local counter=$(__docker_pos_first_nonflag '--change|-c|--message|-m')
|
__docker_complete_images
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_image_tag() {
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local counter=$(__docker_pos_first_nonflag)
|
||||||
|
|
||||||
if [ $cword -eq $counter ]; then
|
if [ $cword -eq $counter ]; then
|
||||||
|
__docker_complete_image_repos_and_tags
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
(( counter++ ))
|
(( counter++ ))
|
||||||
@ -2105,6 +2247,15 @@ _docker_import() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_docker_images() {
|
||||||
|
_docker_image_ls
|
||||||
|
}
|
||||||
|
|
||||||
|
_docker_import() {
|
||||||
|
_docker_image_import
|
||||||
|
}
|
||||||
|
|
||||||
_docker_info() {
|
_docker_info() {
|
||||||
case "$prev" in
|
case "$prev" in
|
||||||
--format|-f)
|
--format|-f)
|
||||||
@ -2120,7 +2271,47 @@ _docker_info() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_inspect() {
|
_docker_inspect() {
|
||||||
_docker_container_inspect
|
local type
|
||||||
|
|
||||||
|
if [ "$1" = "--type" ] ; then
|
||||||
|
type="$2"
|
||||||
|
else
|
||||||
|
type=$(__docker_value_of_option --type)
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$prev" in
|
||||||
|
--format|-f)
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
--type)
|
||||||
|
if [ -z "$type" ] ; then
|
||||||
|
COMPREPLY=( $( compgen -W "image container" -- "$cur" ) )
|
||||||
|
fi
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$cur" in
|
||||||
|
-*)
|
||||||
|
local options="--format -f --help --size -s"
|
||||||
|
if [ -z "$type" ] ; then
|
||||||
|
options+=" --type"
|
||||||
|
fi
|
||||||
|
COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case "$type" in
|
||||||
|
'')
|
||||||
|
__docker_complete_containers_and_images
|
||||||
|
;;
|
||||||
|
container)
|
||||||
|
__docker_complete_containers_all
|
||||||
|
;;
|
||||||
|
image)
|
||||||
|
__docker_complete_images
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_kill() {
|
_docker_kill() {
|
||||||
@ -2128,18 +2319,7 @@ _docker_kill() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_load() {
|
_docker_load() {
|
||||||
case "$prev" in
|
_docker_image_load
|
||||||
--input|-i)
|
|
||||||
_filedir
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$cur" in
|
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--help --input -i --quiet -q" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_login() {
|
_docker_login() {
|
||||||
@ -2897,39 +3077,11 @@ _docker_ps() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_pull() {
|
_docker_pull() {
|
||||||
case "$cur" in
|
_docker_image_pull
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--all-tags -a --disable-content-trust=false --help" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
local counter=$(__docker_pos_first_nonflag)
|
|
||||||
if [ $cword -eq $counter ]; then
|
|
||||||
for arg in "${COMP_WORDS[@]}"; do
|
|
||||||
case "$arg" in
|
|
||||||
--all-tags|-a)
|
|
||||||
__docker_complete_image_repos
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
__docker_complete_image_repos_and_tags
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_push() {
|
_docker_push() {
|
||||||
case "$cur" in
|
_docker_image_push
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--disable-content-trust=false --help" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
local counter=$(__docker_pos_first_nonflag)
|
|
||||||
if [ $cword -eq $counter ]; then
|
|
||||||
__docker_complete_image_repos_and_tags
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_rename() {
|
_docker_rename() {
|
||||||
@ -2945,14 +3097,7 @@ _docker_rm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_rmi() {
|
_docker_rmi() {
|
||||||
case "$cur" in
|
_docker_image_rm
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--force -f --help --no-prune" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
__docker_complete_images
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_run() {
|
_docker_run() {
|
||||||
@ -2960,21 +3105,7 @@ _docker_run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_save() {
|
_docker_save() {
|
||||||
case "$prev" in
|
_docker_image_save
|
||||||
--output|-o)
|
|
||||||
_filedir
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$cur" in
|
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--help --output -o" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
__docker_complete_images
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_search() {
|
_docker_search() {
|
||||||
@ -3021,25 +3152,7 @@ _docker_stop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_docker_tag() {
|
_docker_tag() {
|
||||||
case "$cur" in
|
_docker_image_tag
|
||||||
-*)
|
|
||||||
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
local counter=$(__docker_pos_first_nonflag)
|
|
||||||
|
|
||||||
if [ $cword -eq $counter ]; then
|
|
||||||
__docker_complete_image_repos_and_tags
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
(( counter++ ))
|
|
||||||
|
|
||||||
if [ $cword -eq $counter ]; then
|
|
||||||
__docker_complete_image_repos_and_tags
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_docker_unpause() {
|
_docker_unpause() {
|
||||||
@ -3183,6 +3296,7 @@ _docker() {
|
|||||||
exec
|
exec
|
||||||
export
|
export
|
||||||
history
|
history
|
||||||
|
image
|
||||||
images
|
images
|
||||||
import
|
import
|
||||||
info
|
info
|
||||||
|
|||||||
Reference in New Issue
Block a user