$ErrorActionPreference = 'Stop' $projectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path $envFile = Join-Path $projectRoot '.env.local' $distDir = Join-Path $projectRoot 'dist' $outFile = Join-Path $distDir 'qctextbuilder.exe' if (-not (Test-Path $envFile)) { throw "Missing .env.local at $envFile" } Get-Content $envFile | ForEach-Object { $line = $_.Trim() if (-not $line -or $line.StartsWith('#')) { return } $parts = $line -split '=', 2 if ($parts.Count -ne 2) { return } $name = $parts[0].Trim() $value = $parts[1] [System.Environment]::SetEnvironmentVariable($name, $value, 'Process') } if (-not (Test-Path $distDir)) { New-Item -ItemType Directory -Path $distDir | Out-Null } Set-Location $projectRoot Write-Host 'Running go test ./...' -ForegroundColor Cyan go test ./... Write-Host "Building $outFile" -ForegroundColor Green go build -o $outFile ./cmd/qctextbuilder Write-Host "Build complete: $outFile" -ForegroundColor Green