Skip to content

Commit

Permalink
Merge pull request hashicorp#1863 from mssola/bash-completion
Browse files Browse the repository at this point in the history
contrib: added bash completion
  • Loading branch information
ryanuber authored Jul 5, 2016
2 parents 6e061b2 + b2e8ec9 commit fb6c931
Showing 1 changed file with 264 additions and 0 deletions.
264 changes: 264 additions & 0 deletions contrib/bash-completion/_consul
Original file line number Diff line number Diff line change
@@ -0,0 +1,264 @@
# This completion file has been inspired by the completion files of the Git and
# the Docker projects.

__consulcomp() {
local all c s=$'\n' IFS=' '$'\t'$'\n'
local cur="${COMP_WORDS[COMP_CWORD]}"

for c in $1; do
case "$c$4" in
--*=*) all="$all$c$4$s" ;;
*) all="$all$c$4 $s" ;;
esac
done
IFS=$s
COMPREPLY=($(compgen -P "$2" -W "$all" -- "$cur"))
return
}

__consul_agent() {
local subcommands="
-advertise
-advertise-wan
-atlas
-atlas-join
-atlas-token
-atlas-endpoint
-bootstrap
-bind
-http-port
-bootstrap-expect
-client
-config-file
-config-dir
-data-dir
-recursor
-dc
-encrypt
-join
-join-wan
-retry-join
-retry-interval
-retry-max-wan
-log-level
-node
-protocol
-rejoin
-server
-syslog
-ui
-ui-dir
-pid-file
"
__consulcomp "-help $subcommands"
}

__consul_configtest() {
local subcommands="
-config-file
-config-dir
"
__consulcomp "-help $subcommands"
}

__consul_event() {
local subcommands="
-http-addr
-datacenter
-name
-node
-service
-tag
-token
"
__consulcomp "-help $subcommands"
}

__consul_exec() {
local subcommands="
-http-addr
-datacenter
-prefix
-node
-service
-tag
-wait
-wait-repl
-token
"

__consulcomp "-help $subcommands"
}

__consul_force_leave() {
__consulcomp "-help -rpc-addr"
}

__consul_info() {
__consulcomp "-help -rpc-addr"
}

__consul_join() {
local subcommands="
-rpc-addr
-wan
"

__consulcomp "-help $subcommands"
}

__consul_keygen() {
# NOTE: left empty on purpose.
return
}

__consul_keyring() {
local subcommands="
-install
-list
-remove
-token
-use
-rpc-addr
"

__consulcomp "-help $subcommands"
}

__consul_leave() {
__consulcomp "-help -rpc-addr"
}

__consul_lock() {
local subcommands="
-http-addr
-n
-name
-token
-pass-stdin
-try
-monitor-retry
-verbose
"

__consulcomp "-help $subcommands"
}

__consul_maint() {
local subcommands="
-enable
-disable
-reason
-service
-token
-http-addr
"

__consulcomp "-help $subcommands"
}

__consul_members() {
local subcommands="
-detailed
-rpc-addr
-status
-wan
"

__consulcomp "-help $subcommands"
}

__consul_monitor() {
local subcommands="
-log-level
-rpc-addr
"

__consulcomp "-help $subcommands"
}

__consul_reload() {
__consulcomp "-help -rpc-addr"
}

__consul_rtt() {
local subcommands="
-wan
-http-addr
"

__consulcomp "-help $subcommands"
}

__consul_version() {
# NOTE: left empty on purpose.
return
}

__consul_watch() {
local subcommands="
-http-addr
-datacenter
-token
-key
-name
-passingonly
-prefix
-service
-state
-tag
-type
"

__consulcomp "-help $subcommands"
}

__consul() {
local c=1 command
while [ $c -lt $COMP_CWORD ]; do
cmd="${COMP_WORDS[c]}"
case "$cmd" in
-*) ;;
*) command="$cmd"
esac
c=$((++c))
done

local cmds="
agent
configtest
event
exec
force-leave
info
join
keygen
keyring
leave
lock
maint
members
monitor
reload
rtt
version
watch
"

local globalflags="--help --version"

# Complete a command.
if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
case "${COMP_WORDS[COMP_CWORD]}" in
-*|--*) __consulcomp "$globalflags" ;;
*) __consulcomp "$cmds" ;;
esac
return
fi

# Command options.
local completion_func="__consul_${command//-/_}"
declare -f $completion_func >/dev/null && $completion_func && return
}

complete -o default -o nospace -F __consul consul

0 comments on commit fb6c931

Please sign in to comment.