Files
user-system/scripts/validate.ps1

65 lines
2.9 KiB
PowerShell

# Project Robustness Validation Script
$ErrorActionPreference = "Continue"
$ProjectRoot = Split-Path -Parent $PSScriptRoot
Set-Location $ProjectRoot
Write-Host "======================================" -ForegroundColor Cyan
Write-Host " Project Robustness Validation" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Cyan
# 1. Check Go
Write-Host "`n[1] Checking Go..." -ForegroundColor Yellow
$goVersion = go version 2>$null
if ($LASTEXITCODE -eq 0) { Write-Host "OK: $goVersion" -ForegroundColor Green }
else { Write-Host "FAIL: Go not installed" -ForegroundColor Red; exit 1 }
# 2. Check dependencies
Write-Host "`n[2] Checking dependencies..." -ForegroundColor Yellow
go mod tidy 2>$null
if ($LASTEXITCODE -eq 0) { Write-Host "OK: Dependencies OK" -ForegroundColor Green }
else { Write-Host "WARN: Dependencies issue" -ForegroundColor Yellow }
# 3. Static analysis
Write-Host "`n[3] Running vet..." -ForegroundColor Yellow
go vet ./... 2>$null
if ($LASTEXITCODE -eq 0) { Write-Host "OK: No static errors" -ForegroundColor Green }
else { Write-Host "WARN: Static errors found" -ForegroundColor Yellow }
# 4. Build
Write-Host "`n[4] Building..." -ForegroundColor Yellow
if (-not (Test-Path "data")) { New-Item -ItemType Directory -Path "data" -Force | Out-Null }
# Only build main packages, skip docs and e2e (they have special requirements)
go build -o /dev/null ./cmd/server 2>$null
if ($LASTEXITCODE -eq 0) { Write-Host "OK: Build success" -ForegroundColor Green }
else { Write-Host "FAIL: Build failed" -ForegroundColor Red; exit 1 }
# 5. Test
Write-Host "`n[5] Running tests..." -ForegroundColor Yellow
# Skip docs (has swagger generation issues) and e2e (requires special setup)
$packages = go list ./... | Where-Object { $_ -notmatch "/docs$|/e2e$" }
go test -short $packages 2>$null
if ($LASTEXITCODE -eq 0) { Write-Host "OK: Tests passed" -ForegroundColor Green }
else { Write-Host "WARN: Some tests failed" -ForegroundColor Yellow }
# 6. Config check
Write-Host "`n[6] Config file check..." -ForegroundColor Yellow
if (Test-Path "configs/config.yaml") {
$content = Get-Content "configs/config.yaml" -Raw
if ($content -match "refresh_token_expire:\s*(\d+)d") {
Write-Host "FAIL: JWT config uses unsupported 'd' unit" -ForegroundColor Red
$hours = [int]$matches[1] * 24
$content = $content -replace "refresh_token_expire:\s*\d+d", "refresh_token_expire: ${hours}h"
Set-Content "configs/config.yaml" -Value $content -NoNewline
Write-Host "FIXED: Changed to ${hours}h" -ForegroundColor Green
} else {
Write-Host "OK: Config correct" -ForegroundColor Green
}
} else {
Write-Host "WARN: Config file missing" -ForegroundColor Yellow
}
Write-Host "`n======================================" -ForegroundColor Cyan
Write-Host " Validation Complete" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Cyan