Files
seshat-tts/scripts/build_exe.ps1
T
cbartos 75fc1afa53
CI / Tests (3.10) (push) Waiting to run
CI / Tests (3.13) (push) Waiting to run
seshat-tts
2026-05-22 05:54:01 -04:00

56 lines
1.7 KiB
PowerShell

param(
[switch]$SkipInstall,
[switch]$OneDir
)
$ErrorActionPreference = "Stop"
$Root = Split-Path -Parent $PSScriptRoot
Set-Location $Root
$DistApp = Join-Path $Root "dist\seshat-tts"
$DistExe = Join-Path $Root "dist\seshat-tts.exe"
$RunningApps = @(Get-Process -Name "seshat-tts" -ErrorAction SilentlyContinue)
foreach ($Process in $RunningApps) {
try {
Stop-Process -Id $Process.Id -Force -ErrorAction Stop
} catch {
& taskkill.exe /PID $Process.Id /T /F | Out-Null
}
}
Start-Sleep -Milliseconds 500
$StillRunning = @(Get-Process -Name "seshat-tts" -ErrorAction SilentlyContinue)
if ($StillRunning.Count -gt 0) {
$Ids = ($StillRunning | ForEach-Object { $_.Id }) -join ", "
throw "Close Seshat TTS before building. Could not stop running process id(s): $Ids"
}
foreach ($Target in @($DistApp, $DistExe)) {
if (Test-Path $Target) {
for ($Attempt = 1; $Attempt -le 5; $Attempt++) {
try {
Remove-Item -LiteralPath $Target -Recurse -Force
break
} catch {
if ($Attempt -eq 5) {
throw
}
Start-Sleep -Seconds 2
}
}
}
}
if (-not $SkipInstall) {
python -m pip install --upgrade pip
python -m pip install -e ".[build,test]"
}
if ($OneDir) {
python -m PyInstaller --clean --noconfirm seshat-tts.spec
Write-Host "Built: $Root\dist\seshat-tts\seshat-tts.exe"
} else {
python -m PyInstaller --clean --noconfirm seshat-tts-portable.spec
Write-Host "Built portable EXE: $Root\dist\seshat-tts.exe"
}
Write-Host "The portable EXE bundles the GUI runtime, bundled OCR files when Tesseract is installed on this build machine, and uvx.exe when found."