69 lines
2.4 KiB
PowerShell
69 lines
2.4 KiB
PowerShell
# PicoBot Gateway management script
|
|
param(
|
|
[ValidateSet("start", "stop", "status")]
|
|
[string]$Action = "start",
|
|
[int]$Port = 19876
|
|
)
|
|
|
|
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
|
|
$ExePaths = @(
|
|
"$ScriptDir\picobot.exe", # distribution: same dir
|
|
"$ScriptDir\..\..\target\release\picobot.exe", # dev: release build
|
|
"$ScriptDir\..\..\target\debug\picobot.exe" # dev: debug build
|
|
)
|
|
$Exe = $ExePaths | Where-Object { Test-Path $_ } | Select-Object -First 1
|
|
|
|
if (-not $Exe) {
|
|
Write-Host "[ERROR] picobot.exe not found. Build first: cargo build --release" -ForegroundColor Red
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "[INFO] exe: $Exe" -ForegroundColor Gray
|
|
|
|
switch ($Action) {
|
|
"start" {
|
|
$existing = Get-Process -Name "picobot" -ErrorAction SilentlyContinue
|
|
if ($existing) {
|
|
Write-Host "[WARN] picobot already running (PID: $($existing.Id))" -ForegroundColor Yellow
|
|
exit 0
|
|
}
|
|
|
|
$proc = Start-Process -FilePath $Exe `
|
|
-ArgumentList "gateway", "--port", $Port `
|
|
-WindowStyle Hidden `
|
|
-PassThru
|
|
|
|
Start-Sleep -Seconds 1
|
|
if (-not $proc.HasExited) {
|
|
Write-Host "[OK] Gateway started (PID: $($proc.Id))" -ForegroundColor Green
|
|
Write-Host " URL: http://127.0.0.1:$Port" -ForegroundColor Gray
|
|
Write-Host " WebSocket: ws://127.0.0.1:$Port/ws" -ForegroundColor Gray
|
|
} else {
|
|
Write-Host "[ERROR] Gateway failed to start (exit code: $($proc.ExitCode))" -ForegroundColor Red
|
|
}
|
|
}
|
|
"stop" {
|
|
$procs = Get-Process -Name "picobot" -ErrorAction SilentlyContinue
|
|
if (-not $procs) {
|
|
Write-Host "[INFO] picobot is not running" -ForegroundColor Gray
|
|
exit 0
|
|
}
|
|
$procs | ForEach-Object {
|
|
Write-Host "[INFO] Stopping picobot (PID: $($_.Id))" -ForegroundColor Yellow
|
|
$_.Kill()
|
|
}
|
|
Write-Host "[OK] Stopped" -ForegroundColor Green
|
|
}
|
|
"status" {
|
|
$procs = Get-Process -Name "picobot" -ErrorAction SilentlyContinue
|
|
if ($procs) {
|
|
$procs | ForEach-Object {
|
|
Write-Host "[RUNNING] picobot (PID: $($_.Id), Mem: $([math]::Round($_.WorkingSet64/1MB, 1))MB)" -ForegroundColor Green
|
|
}
|
|
} else {
|
|
Write-Host "[STOPPED] picobot is not running" -ForegroundColor Gray
|
|
}
|
|
}
|
|
}
|