Files
pebrel/scripts/launch_probe_instance.ps1

50 lines
2.0 KiB
PowerShell

# Launch a debug nebula instance for ui_probe and print its PID.
#
# It runs a COPY, never target/debug/pebrel.exe itself. Two reasons, both hit:
#
# 1. Windows will not let a running exe be overwritten. Probing the build
# output directly makes the next `cargo build` die with
# "linking with x86_64-w64-mingw32-gcc failed", while the real cause
# (file in use) is buried under a wall of mingw .drectve warnings.
#
# 2. The probe instance must be disposable, and the user's own Nebula window
# must never be collateral. Different exe paths remove any temptation to
# clean up by image name. NEVER run `taskkill /IM pebrel.exe` here: the
# active Claude Code session may itself be hosted in a Nebula window.
#
# conpty.dll and OpenConsole.exe are copied alongside: the Windows PTY backend
# looks for them next to the exe, and the instance cannot open a shell without
# them.
param(
[string]$SourceDir = "D:\temp_build\nebula\target\debug",
[string]$ProbeDir = "D:\temp_build\nebula\.probe",
[string]$WorkingDir = "D:\temp_build",
[int]$WarmupSeconds = 7
)
$ErrorActionPreference = "Stop"
New-Item -ItemType Directory -Force -Path $ProbeDir | Out-Null
foreach ($name in @("pebrel.exe", "conpty.dll", "OpenConsole.exe")) {
$src = Join-Path $SourceDir $name
if (-not (Test-Path $src)) {
Write-Error "missing build artifact: $src (run cargo build -p nebula --bin pebrel first)"
}
# A previous probe may still hold the same file. A failed copy means it is
# alive; say so, and point at killing it BY PID rather than by image name.
try {
Copy-Item $src (Join-Path $ProbeDir $name) -Force
} catch {
Write-Error "cannot overwrite $name - a previous probe instance is probably still running. Close it with ui_probe.ps1 -ProcId <pid> -Kill."
}
}
$exe = Join-Path $ProbeDir "pebrel.exe"
$p = Start-Process $exe -ArgumentList '--working-directory', $WorkingDir -PassThru
Start-Sleep -Seconds $WarmupSeconds
$p.Refresh()
Write-Output ("pid=" + $p.Id)
Write-Output ("exe=" + $exe)