#!/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