From 120b1616d571f1da23f2ed726be4bdef81923b2e Mon Sep 17 00:00:00 2001 From: Ilan Erenstein Date: Thu, 3 Nov 2016 14:47:58 -0700 Subject: [PATCH 1/2] Adding vault completion --- completion/available/vault.completion.bash | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 completion/available/vault.completion.bash diff --git a/completion/available/vault.completion.bash b/completion/available/vault.completion.bash new file mode 100644 index 00000000..4f1d84fe --- /dev/null +++ b/completion/available/vault.completion.bash @@ -0,0 +1,34 @@ +function _vault() { + + local VAULT_COMMANDS='delete path-help read renew revoke server status write audit-disable audit-enable audit-list auth auth-disable auth-enable capabilities generate-root init key-status list mount mount-tune mounts policies policy-delete policy-write rekey remount rotate seal ssh step-down token-create token-lookup token-renew token-revoke unmount unseal version' + + # get root paths + vault mounts >/dev/null 2>&1 + if [ $? != 0 ]; then + # we do not have access to list mounts + local VAULT_ROOTPATH="secret" + else + local VAULT_ROOTPATH=$(vault mounts | tail -n +2 | awk '{print $1}' | paste -s -d ' ' -) + fi + + local cur=${COMP_WORDS[COMP_CWORD]} + local line=${COMP_LINE} + + if [ "$(echo $line | wc -w)" -le 2 ]; then + if [[ "$line" =~ ^vault\ (read|write|delete|list)\ $ ]]; then + COMPREPLY=($(compgen -W "$VAULT_ROOTPATH" -- '')) + else + COMPREPLY=($(compgen -W "$VAULT_COMMANDS" -- $cur)) + fi + elif [[ "$line" =~ ^vault\ (read|write|delete|list)\ (.*)$ ]]; then + path=${BASH_REMATCH[2]} + if [[ "$path" =~ ^([^ ]+)/([^ /]*)$ ]]; then + list=$(vault list ${BASH_REMATCH[1]} | tail -n +2) + COMPREPLY=($(compgen -W "$list" -P "${BASH_REMATCH[1]}/" -- ${BASH_REMATCH[2]})) + else + COMPREPLY=($(compgen -W "$VAULT_ROOTPATH" -- $path)) + fi + fi +} + +complete -o default -o nospace -F _vault vault From 8ac4093276be117a3f9abba4eedf570b4f722efe Mon Sep 17 00:00:00 2001 From: Ilan Erenstein Date: Fri, 4 Nov 2016 09:20:11 -0700 Subject: [PATCH 2/2] Adding credit to the author of vault completion --- completion/available/vault.completion.bash | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/completion/available/vault.completion.bash b/completion/available/vault.completion.bash index 4f1d84fe..d25d9850 100644 --- a/completion/available/vault.completion.bash +++ b/completion/available/vault.completion.bash @@ -1,3 +1,5 @@ +# Credit https://github.com/iljaweis/vault-bash-completion/ + function _vault() { local VAULT_COMMANDS='delete path-help read renew revoke server status write audit-disable audit-enable audit-list auth auth-disable auth-enable capabilities generate-root init key-status list mount mount-tune mounts policies policy-delete policy-write rekey remount rotate seal ssh step-down token-create token-lookup token-renew token-revoke unmount unseal version' @@ -13,7 +15,7 @@ function _vault() { local cur=${COMP_WORDS[COMP_CWORD]} local line=${COMP_LINE} - + if [ "$(echo $line | wc -w)" -le 2 ]; then if [[ "$line" =~ ^vault\ (read|write|delete|list)\ $ ]]; then COMPREPLY=($(compgen -W "$VAULT_ROOTPATH" -- ''))