Add completion of global options to `docker daemon`

It's a bit confusing: the "global options" are valid as "global options"
for all client commands (i.e. all but daemon).
Example: `docker --log-level info run`

For `docker daemon`, these "global options" are only valid as "command
options".
Example: `docker daemon --log-level info`

As command completion cannot tell which command the user is going to
type next, completion for the daemon command has to allow illegal
syntaxes like
`docker --log-level info daemon --log-level info`

Signed-off-by: Harald Albers <github@albersweb.de>
This commit is contained in:
Harald Albers 2015-07-31 20:02:03 +02:00
parent 9e9f3aa36b
commit e0dad9a153
1 changed files with 19 additions and 5 deletions

View File

@ -295,6 +295,10 @@ __docker_complete_log_driver_options() {
return 1 return 1
} }
__docker_log_levels() {
COMPREPLY=( $( compgen -W "debug info warn error fatal" -- "$cur" ) )
}
# a selection of the available signals that is most likely of interest in the # a selection of the available signals that is most likely of interest in the
# context of docker containers. # context of docker containers.
__docker_signals() { __docker_signals() {
@ -315,16 +319,14 @@ __docker_signals() {
# global options that may appear after the docker command # global options that may appear after the docker command
_docker_docker() { _docker_docker() {
local boolean_options=" local boolean_options="
--debug -D $global_boolean_options
--help -h --help -h
--tls
--tlsverify
--version -v --version -v
" "
case "$prev" in case "$prev" in
--log-level|-l) --log-level|-l)
COMPREPLY=( $( compgen -W "debug info warn error fatal" -- "$cur" ) ) __docker_log_levels
return return
;; ;;
$(__docker_to_extglob "$global_options_with_args") ) $(__docker_to_extglob "$global_options_with_args") )
@ -453,6 +455,7 @@ _docker_create() {
_docker_daemon() { _docker_daemon() {
local boolean_options=" local boolean_options="
$global_boolean_options
--help -h --help -h
--icc=false --icc=false
--ip-forward=false --ip-forward=false
@ -463,6 +466,7 @@ _docker_daemon() {
--userland-proxy=false --userland-proxy=false
" "
local options_with_args=" local options_with_args="
$global_options_with_args
--api-cors-header --api-cors-header
--bip --bip
--bridge -b --bridge -b
@ -507,6 +511,10 @@ _docker_daemon() {
COMPREPLY=( $( compgen -W "aufs devicemapper btrfs overlay" -- "$(echo $cur | tr '[:upper:]' '[:lower:]')" ) ) COMPREPLY=( $( compgen -W "aufs devicemapper btrfs overlay" -- "$(echo $cur | tr '[:upper:]' '[:lower:]')" ) )
return return
;; ;;
--log-level|-l)
__docker_log_levels
return
;;
--log-opt) --log-opt)
__docker_log_driver_options __docker_log_driver_options
return return
@ -514,7 +522,6 @@ _docker_daemon() {
$(__docker_to_extglob "$options_with_args") ) $(__docker_to_extglob "$options_with_args") )
return return
;; ;;
$main_options_with_args_glob )
esac esac
case "$cur" in case "$cur" in
@ -1370,6 +1377,13 @@ _docker() {
wait wait
) )
# These options are valid as global options for all client commands
# and valid as command options for `docker daemon`
local global_boolean_options="
--debug -D
--tls
--tlsverify
"
local global_options_with_args=" local global_options_with_args="
--host -H --host -H
--log-level -l --log-level -l