32 lines
1.4 KiB
PowerShell
32 lines
1.4 KiB
PowerShell
param(
|
|
[ValidateSet('production', 'demo')][string]$Mode = 'production',
|
|
[switch]$SkipMigration
|
|
)
|
|
. (Join-Path $PSScriptRoot 'sense-common.ps1')
|
|
|
|
try {
|
|
$root = Get-SensePackageRoot
|
|
$state = Initialize-SenseRuntime -PackageRoot $root -Mode $Mode
|
|
$sense = Join-Path $root 'sense.exe'
|
|
if (-not (Test-Path -LiteralPath $sense -PathType Leaf)) { throw "Sense executable not found: $sense" }
|
|
$autoMigrate = (Get-SenseEnvironmentValue -Name 'SENSE_AUTO_MIGRATE' -Default 'true').ToLowerInvariant()
|
|
Push-Location $root
|
|
try {
|
|
if (-not $SkipMigration -and $autoMigrate -notin @('false', '0', 'no')) {
|
|
Write-Host 'Applying pending Sense database migrations...'
|
|
& $sense migrate -c $state.SettingsPath
|
|
if ($LASTEXITCODE -ne 0) { throw 'Sense database migration failed. Review the error above and the PostgreSQL connection.' }
|
|
}
|
|
if ($Mode -eq 'demo') {
|
|
Write-Warning 'Sense is running in isolated demo mode. Demo data must not be used as production data.'
|
|
}
|
|
Write-Host "Starting Sense at http://$($state.Host):$($state.Port)/ ..."
|
|
Write-Host 'Press Ctrl+C in this window to stop Sense and its managed MediaMTX process.'
|
|
& $sense server -c $state.SettingsPath
|
|
exit $LASTEXITCODE
|
|
} finally { Pop-Location }
|
|
} catch {
|
|
Write-Error $_.Exception.Message
|
|
exit 1
|
|
}
|