35 lines
1.2 KiB
Bash
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
|