feat: 建立 Sense Windows 交付包 (#70)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user