From 2c9d86eaf2511e0fc17dee19c86113e2e3cad633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torjus=20H=C3=A5kestad?= Date: Thu, 5 Feb 2026 19:36:51 +0100 Subject: [PATCH] vault-fetch: fix multiline secret values being truncated The read-based loop split multiline values on newlines, causing only the first line to be written. Use jq -j to write each key's value directly to files, preserving multiline content. Co-Authored-By: Claude Opus 4.5 --- scripts/vault-fetch/vault-fetch.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/vault-fetch/vault-fetch.sh b/scripts/vault-fetch/vault-fetch.sh index 92a1e3f..3c2bd33 100644 --- a/scripts/vault-fetch/vault-fetch.sh +++ b/scripts/vault-fetch/vault-fetch.sh @@ -137,9 +137,9 @@ fetch_from_vault() { # Write each secret key to a separate file log "Writing secrets to $OUTPUT_DIR" - echo "$SECRET_DATA" | jq -r 'to_entries[] | "\(.key)\n\(.value)"' | while read -r key; read -r value; do - echo -n "$value" > "$OUTPUT_DIR/$key" - echo -n "$value" > "$CACHE_DIR/$key" + for key in $(echo "$SECRET_DATA" | jq -r 'keys[]'); do + echo "$SECRET_DATA" | jq -j --arg k "$key" '.[$k]' > "$OUTPUT_DIR/$key" + echo "$SECRET_DATA" | jq -j --arg k "$key" '.[$k]' > "$CACHE_DIR/$key" chmod 600 "$OUTPUT_DIR/$key" chmod 600 "$CACHE_DIR/$key" log " - Wrote secret key: $key"