From 334005ead33f7058197015fe9324b67642565870 Mon Sep 17 00:00:00 2001 From: Noah Gorny Date: Mon, 14 Dec 2020 17:57:12 +0200 Subject: [PATCH] Clean up vault completion and add to clean_files.txt --- clean_files.txt | 1 + completion/available/vault.completion.bash | 56 +++------------------- 2 files changed, 7 insertions(+), 50 deletions(-) diff --git a/clean_files.txt b/clean_files.txt index c90c5bb7..da5034d9 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -35,6 +35,7 @@ completion/available/knife.completion.bash completion/available/packer.completion.bash completion/available/pipx.completion.bash completion/available/rustup.completion.bash +completion/available/vault.completion.bash # aliases aliases/available/vim.aliases.bash diff --git a/completion/available/vault.completion.bash b/completion/available/vault.completion.bash index f0c747c1..7d082ee7 100644 --- a/completion/available/vault.completion.bash +++ b/completion/available/vault.completion.bash @@ -1,51 +1,7 @@ -# --------------------------------------------------------------------------- -# vault-bash-completion -# -# This adds bash completions for [HashiCorp Vault](https://www.vaultproject.io/) -# -# see https://github.com/iljaweis/vault-bash-completion -# --------------------------------------------------------------------------- +#!/usr/bin/env bash +cite "about-completion" +about-completion "vault completion" -function _vault_mounts() { - ( - set -euo pipefail - if ! vault mounts 2> /dev/null | awk 'NR > 1 {print $1}'; then - echo "secret" - fi - ) -} - -function _vault() { - local VAULT_COMMANDS=$(vault 2>&1 | egrep '^ +' | awk '{print $1}') - - local cur - local prev - - if [ $COMP_CWORD -gt 0 ]; then - cur=${COMP_WORDS[COMP_CWORD]} - prev=${COMP_WORDS[COMP_CWORD-1]} - fi - - local line=${COMP_LINE} - - if [[ $prev =~ ^(policies|policy-write|policy-delete) ]]; then - local policies=$(vault policies 2> /dev/null) - COMPREPLY=($(compgen -W "$policies" -- $cur)) - elif [ "$(echo $line | wc -w)" -le 2 ]; then - if [[ "$line" =~ ^vault\ (read|write|delete|list)\ $ ]]; then - COMPREPLY=($(compgen -W "$(_vault_mounts)" -- '')) - 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 -format=yaml ${BASH_REMATCH[1]} 2> /dev/null | awk '{ print $2 }') - COMPREPLY=($(compgen -W "$list" -P "${BASH_REMATCH[1]}/" -- ${BASH_REMATCH[2]})) - else - COMPREPLY=($(compgen -W "$(_vault_mounts)" -- $path)) - fi - fi -} - -complete -o default -o nospace -F _vault vault +if _binary_exists vault; then + complete -C vault vault +fi