param( [Parameter(Mandatory=$true)] [string]$PythonFile ) function Run-PythonScript { param($ScriptPath) $process = Start-Process -FilePath "python" -ArgumentList $ScriptPath -PassThru -Wait -NoNewWindow return $process.ExitCode } function Run-Tests { $process = Start-Process -FilePath "powershell" -ArgumentList "-File run_tests.ps1" -PassThru -Wait -NoNewWindow return $process.ExitCode } function Git-Pull { git pull return $LASTEXITCODE -eq 0 } $waitTime = 15 while ($true) { python -m pip install -r requirements.txt Write-Host "Running tests..." $testExitCode = Run-Tests if ($testExitCode -ne 0) { Write-Host "Tests failed. Attempting git pull and waiting $waitTime seconds before next attempt..." Git-Pull Start-Sleep -Seconds $waitTime $waitTime *= 2 continue } Write-Host "Tests passed. Starting main Python script..." $exitCode = Run-PythonScript -ScriptPath $PythonFile if (Test-Path -Path ".\.doreboot") { Write-Host "Special filename detected. Attempting git pull..." if (Git-Pull) { Write-Host "Git pull successful. Restarting Python script..." $waitTime = 15 continue } else { Write-Host "Git pull failed. Waiting $waitTime seconds before next attempt..." } } else { exit 1 } Start-Sleep -Seconds $waitTime $waitTime *= 2 }