66 lines
No EOL
2.2 KiB
PowerShell
66 lines
No EOL
2.2 KiB
PowerShell
# Basisordner, in dem alle Shiny App Unterordner liegen
|
|
$baseDir = "C:\Users\johnn\Desktop\formr"
|
|
|
|
# Voller Pfad zu Rscript.exe
|
|
$rscriptExe = "C:\Program Files\R\R-4.6.0\bin\x64\Rscript.exe"
|
|
|
|
# Logdatei für die Ergebnisse
|
|
$logFile = Join-Path $baseDir "renv_restore_log.txt"
|
|
"Start: $(Get-Date)" | Out-File -FilePath $logFile
|
|
|
|
# Alle Unterordner finden, die eine renv.lock enthalten
|
|
$appFolders = Get-ChildItem -Path $baseDir -Recurse -Filter "renv.lock" |
|
|
ForEach-Object { $_.Directory.FullName } |
|
|
Sort-Object -Unique
|
|
|
|
Write-Host "Gefundene Apps mit renv.lock: $($appFolders.Count)"
|
|
|
|
$erfolgreich = @()
|
|
$fehlgeschlagen = @()
|
|
|
|
foreach ($folder in $appFolders) {
|
|
Write-Host "Bearbeite: $folder"
|
|
"----" | Out-File -FilePath $logFile -Append
|
|
"App: $folder" | Out-File -FilePath $logFile -Append
|
|
|
|
# R Befehl als Einzeiler, escaped für Rscript -e
|
|
$rCommand = "renv::restore(project = '$($folder -replace '\\','/')', prompt = FALSE)"
|
|
|
|
$output = & $rscriptExe -e $rCommand 2>&1
|
|
$output | Out-File -FilePath $logFile -Append
|
|
|
|
# Grobe Erfolgsprüfung: enthält die Ausgabe Fehlerhinweise?
|
|
$hatFehler = $output -match "Error|error in|konnte nicht|es gibt kein Paket"
|
|
|
|
if ($hatFehler) {
|
|
"Status: FEHLER" | Out-File -FilePath $logFile -Append
|
|
$fehlgeschlagen += $folder
|
|
} else {
|
|
"Status: OK" | Out-File -FilePath $logFile -Append
|
|
$erfolgreich += $folder
|
|
}
|
|
}
|
|
|
|
"Ende: $(Get-Date)" | Out-File -FilePath $logFile -Append
|
|
|
|
# Zusammenfassung
|
|
Write-Host ""
|
|
Write-Host "===== Zusammenfassung ====="
|
|
Write-Host "Gesamt: $($appFolders.Count)"
|
|
Write-Host "Erfolgreich: $($erfolgreich.Count)"
|
|
Write-Host "Fehlgeschlagen: $($fehlgeschlagen.Count)"
|
|
|
|
if ($fehlgeschlagen.Count -gt 0) {
|
|
Write-Host ""
|
|
Write-Host "Fehlgeschlagene Ordner:"
|
|
$fehlgeschlagen | ForEach-Object { Write-Host " - $_" }
|
|
}
|
|
|
|
"===== Zusammenfassung =====" | Out-File -FilePath $logFile -Append
|
|
"Gesamt: $($appFolders.Count)" | Out-File -FilePath $logFile -Append
|
|
"Erfolgreich: $($erfolgreich.Count)" | Out-File -FilePath $logFile -Append
|
|
"Fehlgeschlagen: $($fehlgeschlagen.Count)" | Out-File -FilePath $logFile -Append
|
|
$fehlgeschlagen | Out-File -FilePath $logFile -Append
|
|
|
|
Write-Host ""
|
|
Write-Host "Fertig. Log unter: $logFile" |