Browse Source

vault-kv-tree: support extra vault arguments

master
Maxim Likhachev 3 years ago
parent
commit
7f1b562d25
  1. 44
      scripts/vault-kv-tree

44
scripts/vault-kv-tree

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Copyright (C) 2020, Maxim Lihachev, <envrm@yandex.ru>
# Copyright (C) 2020-2022, Maxim Likhachev, <envrm@yandex.ru>
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
@ -28,13 +28,25 @@ rstc="\033[00m" @@ -28,13 +28,25 @@ rstc="\033[00m"
blue="\033[0;36m"
green="\033[1;32m"
function die() {
echo -e "$@" >&2
exit 1
}
vault_list() {
vault kv list -format=yaml "$1"
path=$1
shift
vault kv list -format=yaml "$@" "$path"
}
vault_keys() {
path=${1//\/\//\/}
keys=$(vault kv get -format=json "$path" 2>&- | jq -r -j '.data.data | keys | join("\n")' 2>&-)
shift
keys=$(vault kv get -format=json "$@" "$path" 2>&- | jq -r -j '.data.data | keys | join("\n")' 2>&-)
if [ -n "$keys" ]; then
while read -r key; do
@ -45,27 +57,33 @@ vault_keys() { @@ -45,27 +57,33 @@ vault_keys() {
vault_tree() {
path=${1//\/\//\/}
list=$(vault_list "$path")
shift
list=$(vault_list "$path" "$@")
echo -e "${blue}${path}${rstc}"
if [ -n "$list" ] && [ "$list" != '{}' ]; then
while read -r dir; do
# printf "%s%s\n" "$INDENT" "$dir"
# echo "LIST ${path}/${dir#- }"
( vault_tree "${path}/${dir#- }"; )
( vault_tree "${path}/${dir#- }" "$@"; )
done <<<"$list"
# INDENT+=" "
else
:
vault_keys "$path"
vault_keys "$path" "$@"
fi
}
[[ "${BASH_VERSINFO[0]}" -lt 5 ]] && die "ERROR: Bash >= 5 required."
DEPENDENCIES=(vault jq)
for dependency in "${DEPENDENCIES[@]}"; do
command -V "$dependency" &>/dev/null || die "ERROR: The required '$dependency' command is not found."
done
if [ $# -eq 0 ]; then
echo "USAGE: $(basename "$0") [path]"
exit 1
die "USAGE: $(basename "$0") [path] [vault arguments...]"
else
vault_tree "$1"
vault_tree "$@"
fi

Loading…
Cancel
Save