mono/packages/media/cpp/scripts/run-media-img.ps1
2026-04-13 19:26:43 +02:00

64 lines
2.0 KiB
PowerShell

# Wrapper for NSSM, WinSW, Task Scheduler, or manual runs. Configure via environment variables.
#
# $env:MEDIA_IMG_CMD = serve | ipc (default: serve)
# $env:MEDIA_IMG_BIN = path to media-img.exe (optional)
# $env:MEDIA_IMG_HOST = bind address (default: 127.0.0.1)
# $env:MEDIA_IMG_PORT = TCP port — default 8080 for serve, 9333 for ipc
# $env:MEDIA_IMG_CACHE_DIR = optional — passed as --cache-dir
# $env:MEDIA_IMG_NO_CACHE = "1" to add --no-cache
# $env:MEDIA_IMG_IPC_UNIX = not used on Windows (IPC TCP only here)
#
# If MEDIA_IMG_BIN is unset, uses ..\dist\media-img.exe next to this script when present,
# otherwise "media-img.exe" on PATH.
#
# Example:
# $env:MEDIA_IMG_CMD = "serve"; $env:MEDIA_IMG_PORT = "8080"
# & C:\Apps\media\scripts\run-media-img.ps1
param(
[Parameter(ValueFromRemainingArguments = $true)]
[string[]] $ExtraArgs
)
$ErrorActionPreference = "Stop"
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$candidate = Join-Path $here "..\dist\media-img.exe"
if ($env:MEDIA_IMG_BIN) {
$bin = $env:MEDIA_IMG_BIN
}
elseif (Test-Path -LiteralPath $candidate) {
$bin = (Resolve-Path $candidate).Path
}
else {
$bin = "media-img.exe"
}
$cmd = if ($env:MEDIA_IMG_CMD) { $env:MEDIA_IMG_CMD } else { "serve" }
$hostAddr = if ($env:MEDIA_IMG_HOST) { $env:MEDIA_IMG_HOST } else { "127.0.0.1" }
$extra = @()
if ($env:MEDIA_IMG_CACHE_DIR) {
$extra += "--cache-dir", $env:MEDIA_IMG_CACHE_DIR
}
if ($env:MEDIA_IMG_NO_CACHE -eq "1") {
$extra += "--no-cache"
}
switch ($cmd) {
"serve" {
$port = if ($env:MEDIA_IMG_PORT) { $env:MEDIA_IMG_PORT } else { "8080" }
& "$bin" serve --host $hostAddr --port $port @extra @ExtraArgs
exit $LASTEXITCODE
}
"ipc" {
$port = if ($env:MEDIA_IMG_PORT) { $env:MEDIA_IMG_PORT } else { "9333" }
& "$bin" ipc --host $hostAddr --port $port @extra @ExtraArgs
exit $LASTEXITCODE
}
default {
Write-Error "run-media-img.ps1: MEDIA_IMG_CMD must be 'serve' or 'ipc', got: $cmd"
}
}