Spaces:
Sleeping
Sleeping
| param ( | |
| [Parameter(Mandatory=$true)][string]$PingUrl, | |
| [string]$RepoDir = "." | |
| ) | |
| $ErrorActionPreference = "Continue" | |
| Write-Host "`n========================================" -ForegroundColor Cyan | |
| Write-Host " OpenEnv Submission Validator (Windows)" -ForegroundColor Cyan | |
| Write-Host "========================================" -ForegroundColor Cyan | |
| Write-Host "Repo: $RepoDir" | |
| Write-Host "Ping URL: $PingUrl`n" | |
| # Step 1: Ping HF Space | |
| Write-Host "Step 1/3: Pinging HF Space ($PingUrl/reset) ..." -ForegroundColor Cyan | |
| try { | |
| $response = Invoke-WebRequest -Uri "$PingUrl/reset" -Method Post -ContentType "application/json" -Body "{}" -UseBasicParsing -TimeoutSec 30 | |
| if ($response.StatusCode -eq 200) { | |
| Write-Host "PASSED -- HF Space is live and responds to /reset`n" -ForegroundColor Green | |
| } else { | |
| Write-Host "FAILED -- HF Space /reset returned HTTP $($response.StatusCode) (expected 200)" -ForegroundColor Red | |
| exit 1 | |
| } | |
| } catch { | |
| Write-Host "FAILED -- HF Space not reachable (connection failed or timed out)" -ForegroundColor Red | |
| Write-Host "Hint: Try starting your local FastAPI server in another terminal window.`n" -ForegroundColor Yellow | |
| exit 1 | |
| } | |
| # Step 2: Docker build | |
| Write-Host "Step 2/3: Running docker build ..." -ForegroundColor Cyan | |
| if (!(Get-Command "docker" -ErrorAction SilentlyContinue)) { | |
| Write-Host "FAILED -- docker command not found" -ForegroundColor Red | |
| Write-Host "Hint: Ensure Docker Desktop is installed and running.`n" -ForegroundColor Yellow | |
| exit 1 | |
| } | |
| $dockerContext = $RepoDir | |
| if (Test-Path "$RepoDir\server\Dockerfile") { | |
| $dockerContext = "$RepoDir\server" | |
| } elseif (!(Test-Path "$RepoDir\Dockerfile")) { | |
| Write-Host "FAILED -- No Dockerfile found in repo root." -ForegroundColor Red | |
| exit 1 | |
| } | |
| Write-Host " Found Dockerfile in $dockerContext" | |
| $process = Start-Process -FilePath "docker" -ArgumentList "build $dockerContext" -Wait -NoNewWindow -PassThru | |
| if ($process.ExitCode -eq 0) { | |
| Write-Host "PASSED -- Docker build succeeded`n" -ForegroundColor Green | |
| } else { | |
| Write-Host "FAILED -- Docker build failed." -ForegroundColor Red | |
| exit 1 | |
| } | |
| # Step 3: OpenEnv validate | |
| Write-Host "Step 3/3: Running openenv validate ..." -ForegroundColor Cyan | |
| if (!(Get-Command "openenv" -ErrorAction SilentlyContinue)) { | |
| Write-Host "FAILED -- openenv command not found" -ForegroundColor Red | |
| Write-Host "Hint: Install it via: pip install openenv-core`n" -ForegroundColor Yellow | |
| exit 1 | |
| } | |
| # Temporarily change directory to the repo root to run validation | |
| Push-Location $RepoDir | |
| $process = Start-Process -FilePath "openenv" -ArgumentList "validate" -Wait -NoNewWindow -PassThru | |
| Pop-Location | |
| if ($process.ExitCode -eq 0) { | |
| Write-Host "`nPASSED -- openenv validate passed" -ForegroundColor Green | |
| } else { | |
| Write-Host "`nFAILED -- openenv validate failed." -ForegroundColor Red | |
| exit 1 | |
| } | |
| Write-Host "`n========================================" -ForegroundColor Cyan | |
| Write-Host " All 3/3 checks passed! Ready to submit." -ForegroundColor Green | |
| Write-Host "========================================`n" -ForegroundColor Cyan |