Compare commits
No commits in common. "edabc9e892789b74d8b762bd5b3981af0301356e" and "e2b53c9c506cdc8ee6b0a86cb8ee0d27eddc3b94" have entirely different histories.
edabc9e892
...
e2b53c9c50
@ -5,42 +5,8 @@
|
|||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
print_help() {
|
|
||||||
cat << EOF
|
|
||||||
clerie-sops-edit <secrets_file> <action> <key>
|
|
||||||
|
|
||||||
This script allows editing single secrets in a secrets file by key.
|
|
||||||
|
|
||||||
<secrets_file> is a sops secrets file
|
|
||||||
<action> is one of "edit", "read", "set" and "append"
|
|
||||||
<key> is the key of the secret in the secrets file to modify
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ $# != 3 ]]; then
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
SECRETS_FILE="$1"
|
SECRETS_FILE="$1"
|
||||||
|
KEY="$2"
|
||||||
if [[ ! -f "${SECRETS_FILE}" ]]; then
|
|
||||||
echo "File \"${SECRETS_FILE}\" does not exist"
|
|
||||||
echo
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
ACTION="$2"
|
|
||||||
|
|
||||||
if ! echo "edit read set append" | grep -wq "${ACTION}"; then
|
|
||||||
echo "Action \"${ACTION}\" not supported"
|
|
||||||
echo
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
KEY="$3"
|
|
||||||
KEY_SELECTOR="$(jq -Rsc '[.]' <(echo -n "${KEY}"))"
|
KEY_SELECTOR="$(jq -Rsc '[.]' <(echo -n "${KEY}"))"
|
||||||
|
|
||||||
if [[ -n $EDITOR ]]; then
|
if [[ -n $EDITOR ]]; then
|
||||||
@ -48,36 +14,12 @@ if [[ -n $EDITOR ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
TMP_FILE="$(mktemp)"
|
TMP_FILE="$(mktemp)"
|
||||||
DECRYPT_ERROR_FILE="$(mktemp)"
|
|
||||||
|
|
||||||
if ! clerie-sops --decrypt --extract "${KEY_SELECTOR}" "${SECRETS_FILE}" > "${TMP_FILE}" 2> "${DECRYPT_ERROR_FILE}"; then
|
clerie-sops --decrypt --extract "${KEY_SELECTOR}" "${SECRETS_FILE}" > "${TMP_FILE}"
|
||||||
# Ignore that the key does not exist, but fail for all other errors
|
|
||||||
if ! grep -q "component .* not found" "${DECRYPT_ERROR_FILE}"; then
|
|
||||||
cat "${DECRYPT_ERROR_FILE}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
TMP_FILE_HASH_BEFORE="$(sha256sum "${TMP_FILE}")"
|
TMP_FILE_HASH_BEFORE="$(sha256sum "${TMP_FILE}")"
|
||||||
|
|
||||||
case "${ACTION}" in
|
vim "${TMP_FILE}"
|
||||||
edit)
|
|
||||||
"${EDITOR}" "${TMP_FILE}"
|
|
||||||
;;
|
|
||||||
read)
|
|
||||||
cat "${TMP_FILE}"
|
|
||||||
;;
|
|
||||||
set)
|
|
||||||
cat > "${TMP_FILE}"
|
|
||||||
;;
|
|
||||||
append)
|
|
||||||
cat >> "${TMP_FILE}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported action"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
TMP_FILE_HASH_AFTER="$(sha256sum "${TMP_FILE}")"
|
TMP_FILE_HASH_AFTER="$(sha256sum "${TMP_FILE}")"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user