50 lines
1.3 KiB
PowerShell
50 lines
1.3 KiB
PowerShell
param(
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$PythonFile,
|
|
[int]$SpecialExitCode = 42,
|
|
[int]$MaxAttempts = 20
|
|
)
|
|
|
|
function Run-PythonScript {
|
|
param($ScriptPath)
|
|
$process = Start-Process -FilePath "python" -ArgumentList $ScriptPath -PassThru -Wait -NoNewWindow
|
|
Write-Host "Process details: $($process | Format-List | Out-String)" # Added line
|
|
return $process.ExitCode
|
|
}
|
|
|
|
function Git-Pull {
|
|
git pull
|
|
return $LASTEXITCODE -eq 0
|
|
}
|
|
|
|
$attempt = 1
|
|
$waitTime = 15
|
|
|
|
while ($attempt -le $MaxAttempts) {
|
|
Write-Host "Attempt $attempt of $MaxAttempts"
|
|
|
|
$exitCode = Run-PythonScript -ScriptPath $PythonFile
|
|
|
|
if ($exitCode -eq $SpecialExitCode) {
|
|
Write-Host "Special exit code detected. Attempting git pull..."
|
|
|
|
if (Git-Pull) {
|
|
Write-Host "Git pull successful. Restarting Python script..."
|
|
$attempt = 1
|
|
$waitTime = 15
|
|
continue
|
|
} else {
|
|
Write-Host "Git pull failed. Waiting $waitTime seconds before next attempt..."
|
|
}
|
|
} else {
|
|
Write-Host "Python script exited with code $exitCode. Exiting..."
|
|
exit $exitCode
|
|
}
|
|
|
|
Start-Sleep -Seconds $waitTime
|
|
$attempt++
|
|
$waitTime *= 2
|
|
}
|
|
|
|
Write-Host "Maximum attempts reached. Exiting..."
|
|
exit 1 |