diff --git a/contrib/completion/bash/docker b/contrib/completion/bash/docker index 4c2737b8b1..0375e6f95b 100644 --- a/contrib/completion/bash/docker +++ b/contrib/completion/bash/docker @@ -138,6 +138,10 @@ __docker_containers_and_images() { COMPREPLY+=( "${containers[@]}" ) } +__docker_networks() { + COMPREPLY=( $(compgen -W "$(__docker_q network ls | awk 'NR>1 {print $2}')" -- "$cur") ) +} + __docker_volumes() { COMPREPLY=( $(compgen -W "$(__docker_q volume ls -q)" -- "$cur") ) } @@ -994,6 +998,98 @@ _docker_logs() { esac } +_docker_network_connect() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + local counter=$(__docker_pos_first_nonflag '--tail') + if [ $cword -eq $counter ]; then + __docker_networks + elif [ $cword -eq $(($counter + 1)) ]; then + __docker_containers_running + fi + ;; + esac +} + +_docker_network_create() { + case "$prev" in + --driver|-d) + # no need to suggest drivers that allow one instance only + # (host, null) + COMPREPLY=( $( compgen -W "bridge overlay" -- "$cur" ) ) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--driver -d --help" -- "$cur" ) ) + ;; + esac +} + +_docker_network_disconnect() { + # TODO disconnect should only complete running containers connected + # to the specified network. + _docker_network_connect +} + +_docker_network_inspect() { + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + local counter=$(__docker_pos_first_nonflag) + if [ $cword -eq $counter ]; then + __docker_networks + fi + ;; + esac +} + +_docker_network_ls() { + case "$prev" in + -n) + return + ;; + esac + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help --latest -l -n --no-trunc --quiet -q" -- "$cur" ) ) + ;; + esac +} + +_docker_network_rm() { + _docker_network_inspect +} + +_docker_network() { + local subcommands=" + connect + create + disconnect + inspect + ls + rm + " + __docker_subcommands "$subcommands" && return + + case "$cur" in + -*) + COMPREPLY=( $( compgen -W "--help" -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W "$subcommands" -- "$cur" ) ) + ;; + esac +} + _docker_pause() { case "$cur" in -*) @@ -1623,6 +1719,7 @@ _docker() { login logout logs + network pause port ps