Files
kra-new/scripts/start-sw-rehearsal.ps1
T

38 lines
1.7 KiB
PowerShell

param(
[Parameter(Mandatory = $true)][string]$RuntimePath,
[string]$ConfigName = 'config-next.yaml',
[string]$BinaryPath = '.cache/sw89/sw-new-complete.exe'
)
$ErrorActionPreference = 'Stop'
$workspaceRoot = (Resolve-Path (Join-Path $PSScriptRoot '..')).Path
$runtimeRoot = (Resolve-Path -LiteralPath $RuntimePath).Path
$configPath = (Resolve-Path -LiteralPath (Join-Path $runtimeRoot $ConfigName)).Path
if (-not [System.IO.Path]::IsPathRooted($BinaryPath)) {
$BinaryPath = Join-Path $workspaceRoot $BinaryPath
}
$binary = (Resolve-Path -LiteralPath $BinaryPath).Path
$compat = Get-Content -LiteralPath (Join-Path $runtimeRoot 'sdk-compatibility.json') -Raw | ConvertFrom-Json
$previous = @{}
$settings = @{
SW_SDK_AUTH_CODE = $compat.AUTH_CODE
SW_SDK_MIGRATE_AUTH_CODE = $compat.MIGRATE_AUTH_CODE
SW_SDK_TABLE_PREFIX = $compat.TABLE_PREFIX
}
try {
foreach ($name in $settings.Keys) {
$previous[$name] = [Environment]::GetEnvironmentVariable($name, 'Process')
[Environment]::SetEnvironmentVariable($name, $settings[$name], 'Process')
}
$process = Start-Process -FilePath $binary -ArgumentList @('-conf', ('"' + $configPath + '"')) `
-WorkingDirectory $workspaceRoot -WindowStyle Hidden `
-RedirectStandardOutput (Join-Path $runtimeRoot 'rehearsal.stdout.log') `
-RedirectStandardError (Join-Path $runtimeRoot 'rehearsal.stderr.log') -PassThru
$process.Id | Set-Content -LiteralPath (Join-Path $runtimeRoot 'rehearsal.pid')
Write-Output "Rehearsal process: $($process.Id)"
} finally {
foreach ($name in $previous.Keys) {
[Environment]::SetEnvironmentVariable($name, $previous[$name], 'Process')
}
}