18 lines
1.2 KiB
PowerShell
18 lines
1.2 KiB
PowerShell
. (Join-Path $PSScriptRoot 'bell-common.ps1')
|
|
try {
|
|
$root = Get-BellPackageRoot
|
|
$pidFile = Join-Path $root 'runtime\bell.pid'
|
|
if (-not (Test-Path -LiteralPath $pidFile -PathType Leaf)) { Write-Host 'Bell is not running (no pid file).'; exit 0 }
|
|
$processId = 0
|
|
if (-not [int]::TryParse((Get-Content -LiteralPath $pidFile -Raw).Trim(), [ref]$processId)) { throw 'Bell pid file is invalid.' }
|
|
$process = Get-CimInstance Win32_Process -Filter "ProcessId = $processId" -ErrorAction SilentlyContinue
|
|
if (-not $process) { Remove-Item -LiteralPath $pidFile -Force; Write-Host 'Removed stale Bell pid file.'; exit 0 }
|
|
$rootPattern = [regex]::Escape($root)
|
|
if ($process.Name -notmatch '^(pwsh|powershell)\.exe$' -or $process.CommandLine -notmatch 'start-bell\.ps1' -or $process.CommandLine -notmatch $rootPattern) { throw "Process $processId is not the Bell package launcher; it was not stopped." }
|
|
& taskkill.exe /PID $processId /T /F | Out-Null
|
|
if ($LASTEXITCODE -ne 0) { throw 'Failed to stop the Bell process tree.' }
|
|
Remove-Item -LiteralPath $pidFile -Force -ErrorAction SilentlyContinue
|
|
Write-Host 'Bell backend and web process tree stopped.'
|
|
exit 0
|
|
} catch { Write-Error $_.Exception.Message; exit 1 }
|