81 lines
2.3 KiB
PowerShell
81 lines
2.3 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[Alias("h")]
|
|
[switch]$Help,
|
|
[switch]$RunSmoke,
|
|
[switch]$RunSpacetimeBuild
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
function Write-Usage {
|
|
@(
|
|
'Usage:',
|
|
' ./server-rs/scripts/m7-preflight.ps1',
|
|
' ./server-rs/scripts/m7-preflight.ps1 -RunSmoke',
|
|
' ./server-rs/scripts/m7-preflight.ps1 -RunSpacetimeBuild',
|
|
'',
|
|
'Notes:',
|
|
' 1. Run M7 cutover preflight checks for Rust backend',
|
|
' 2. Default checks are non-destructive and do not publish or clear SpacetimeDB data',
|
|
' 3. -RunSmoke starts a temporary api-server and verifies /healthz contract',
|
|
' 4. -RunSpacetimeBuild requires spacetime CLI and only builds the module'
|
|
) -join [Environment]::NewLine
|
|
}
|
|
|
|
if ($Help) {
|
|
Write-Usage
|
|
exit 0
|
|
}
|
|
|
|
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$serverRsDir = Split-Path -Parent $scriptDir
|
|
$repoRoot = Split-Path -Parent $serverRsDir
|
|
$manifestPath = Join-Path $serverRsDir "Cargo.toml"
|
|
$modulePath = Join-Path $serverRsDir "crates\spacetime-module"
|
|
|
|
if (-not (Test-Path $manifestPath)) {
|
|
throw "Missing server-rs/Cargo.toml, cannot start M7 preflight."
|
|
}
|
|
|
|
Write-Host "[m7:preflight] repo root: $repoRoot"
|
|
Write-Host "[m7:preflight] server-rs: $serverRsDir"
|
|
|
|
Push-Location $serverRsDir
|
|
try {
|
|
Write-Host "[m7:preflight] step: cargo check -p spacetime-module"
|
|
cargo check -p spacetime-module --manifest-path $manifestPath
|
|
|
|
Write-Host "[m7:preflight] step: cargo check -p api-server"
|
|
cargo check -p api-server --manifest-path $manifestPath
|
|
|
|
Write-Host "[m7:preflight] step: cargo test -p shared-contracts"
|
|
cargo test -p shared-contracts --manifest-path $manifestPath
|
|
|
|
if ($RunSpacetimeBuild) {
|
|
$spacetimeCommand = Get-Command spacetime -ErrorAction SilentlyContinue
|
|
if ($null -eq $spacetimeCommand) {
|
|
throw "Missing spacetime CLI, cannot run spacetime build."
|
|
}
|
|
|
|
Write-Host "[m7:preflight] step: spacetime build --debug"
|
|
Push-Location $modulePath
|
|
try {
|
|
& $spacetimeCommand.Source build --debug
|
|
}
|
|
finally {
|
|
Pop-Location
|
|
}
|
|
}
|
|
}
|
|
finally {
|
|
Pop-Location
|
|
}
|
|
|
|
if ($RunSmoke) {
|
|
Write-Host "[m7:preflight] step: server-rs smoke"
|
|
& (Join-Path $serverRsDir "scripts\smoke.ps1")
|
|
}
|
|
|
|
Write-Host "[m7:preflight] all checks passed"
|