1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<#
One-command quality gate for ek-data (ticket T4, 2026-10-27).
Runs (in order):
1. cargo fmt --check (0 output expected)
2. cargo test (all test targets)
3. cargo clippy --all-targets -- -D warnings
4. cargo doc --no-deps
Usage:
powershell -ExecutionPolicy Bypass -File scripts/gate.ps1
Exit code: 0 = all gates passed, 1 = at least one gate failed.
Note: formatting results are bound to the rustfmt version; the repo baseline is
rustfmt 1.8.0-stable with rustc 1.94.0 (both printed below). A different rustfmt
may report a false failure.
NOTE: ASCII-only on purpose (Windows PowerShell 5.1 decodes BOM-less .ps1 as ANSI).
#>
[CmdletBinding()]
param()
# 'Continue' on purpose: cargo/clippy write progress to stderr, which PowerShell
# would otherwise surface as terminating errors when the preference is 'Stop'.
$ErrorActionPreference = 'Continue'
$root = Split-Path -Parent $PSScriptRoot
Push-Location $root
try {
Write-Host "toolchain:" -ForegroundColor Cyan
& rustfmt --version
& rustc --version
& cargo --version
$results = New-Object System.Collections.ArrayList
function Invoke-Gate {
param([string]$Name, [scriptblock]$Body)
Write-Host ""
Write-Host ("=== " + $Name + " ===") -ForegroundColor Cyan
& $Body
$code = $LASTEXITCODE
if ($null -eq $code) { $code = 0 }
if ($code -eq 0) {
Write-Host ("PASS " + $Name) -ForegroundColor Green
[void]$results.Add([pscustomobject]@{ Name = $Name; Ok = $true })
} else {
Write-Host ("FAIL " + $Name + " (exit " + $code + ")") -ForegroundColor Red
[void]$results.Add([pscustomobject]@{ Name = $Name; Ok = $false })
}
}
Invoke-Gate 'cargo fmt --check' { cargo fmt --check }
Invoke-Gate 'cargo test' { cargo test }
Invoke-Gate 'cargo clippy --all-targets -- -D warnings' { cargo clippy --all-targets -- -D warnings }
Invoke-Gate 'cargo doc --no-deps' { cargo doc --no-deps }
Write-Host ""
Write-Host "===== gate summary =====" -ForegroundColor Cyan
$failed = 0
foreach ($r in $results) {
if ($r.Ok) {
Write-Host (" PASS " + $r.Name) -ForegroundColor Green
} else {
Write-Host (" FAIL " + $r.Name) -ForegroundColor Red
$failed++
}
}
if ($failed -eq 0) {
Write-Host "ALL GATES PASSED" -ForegroundColor Green
exit 0
} else {
Write-Host ("GATES FAILED: " + $failed) -ForegroundColor Red
exit 1
}
} finally {
Pop-Location
}