DiagnostikApps/#alt_skripte/inject_chiffre_param.sh
2026-09-22 18:35:43 +02:00

35 lines
1.2 KiB
Bash

#!/usr/bin/env bash
# Injiziert den URL-Parameter-Block (Chiffre aus ?chiffre=... vorausfuellen)
# in alle app.R-Dateien neben diesem Skript (bzw. im Root, ausgefuehrt dort).
# Idempotent: bereits gepatchte Dateien werden uebersprungen. Legt vor jeder
# Aenderung ein .bak an.
set -euo pipefail
SNIPPET=' observe({
query = parseQueryString(session$clientData$url_search)
if (!is.null(query$chiffre) && nchar(trimws(query$chiffre)) > 0) {
updateTextInput(session, "chiffre", value = toupper(trimws(query$chiffre)))
}
})'
MARKER='parseQueryString(session$clientData$url_search)'
find . -maxdepth 2 -iname 'app.R' -print0 | while IFS= read -r -d '' f; do
if grep -qF "$MARKER" "$f"; then
echo "SKIP (bereits vorhanden): $f"
continue
fi
if ! grep -qE 'server[[:space:]]*=[[:space:]]*function\(input, output, session\)[[:space:]]*\{' "$f"; then
echo "WARNUNG: Server-Signatur nicht gefunden, uebersprungen: $f"
continue
fi
cp "$f" "$f.bak"
awk -v snippet="$SNIPPET" '
{ print }
/server[ \t]*=[ \t]*function\(input, output, session\)[ \t]*\{/ && !done {
print snippet
done = 1
}
' "$f.bak" > "$f"
echo "OK: $f (Backup: $f.bak)"
done