The previous commit fixed the target catalog and the operator alarm, but the actuators the catalog invokes carried the same E: paths. Idunn would have resolved every target and then failed on the first restart or deploy it ran, for exactly the reason the alarm failed. Rebased 41 references across 27 scripts: - .cmd bodies invoke their sibling .ps1 through %~dp0 instead of an absolute drive path, and restart-weksa.cmd reaches its sibling repo the same way. - .ps1 parameter defaults and assignments derive from $PSScriptRoot: one level up for paths inside Odin, two for sibling repos under the projects root. Left deliberately alone: $RemoteViliRoot and $StateRoot in restart-vili.ps1. Both are consumed inside the EncodedCommand block that restart-vili ssh's to raven, so they describe raven's filesystem, not starfire's. Whether raven also moved off E: is an operator question, not something to infer from here. Verified: all 46 scripts under scripts/ parse clean, and the derivation resolves to F:\Projects\Odin and F:\Projects on this host. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
562 B
PowerShell
22 lines
562 B
PowerShell
param(
|
|
[string] $StateDir = (Join-Path (Split-Path -Parent $PSScriptRoot) "scratch\odin")
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$pidPath = Join-Path $StateDir "odin.pid"
|
|
if (-not (Test-Path $pidPath)) {
|
|
Write-Host "No Odin PID file found at $pidPath."
|
|
exit 0
|
|
}
|
|
|
|
$odinPid = (Get-Content -Raw $pidPath).Trim()
|
|
if ($odinPid -match "^\d+$") {
|
|
$process = Get-Process -Id ([int] $odinPid) -ErrorAction SilentlyContinue
|
|
if ($process) {
|
|
Stop-Process -Id $process.Id
|
|
Write-Host "Stopped Odin PID $odinPid."
|
|
}
|
|
}
|
|
|
|
Remove-Item -LiteralPath $pidPath -Force
|