Files
openswarm/scripts/fetch-router.ps1
T

37 lines
1.3 KiB
PowerShell

param(
[Parameter(Mandatory=$true)]
[string]$Dest
)
$ErrorActionPreference = 'Stop'
$RouterVersion = if ($env:ROUTER_VERSION) { $env:ROUTER_VERSION } else { '0.3.60' }
Write-Host "Fetching 9router@$RouterVersion from npm..."
$Scratch = New-Item -ItemType Directory -Path (Join-Path $env:TEMP "9router-fetch-$([guid]::NewGuid())")
try {
Push-Location $Scratch
'{"name":"_fetch","version":"0.0.0","private":true}' | Out-File -Encoding utf8 -NoNewline package.json
& npm install "9router@$RouterVersion" --no-save --no-audit --no-fund --silent --ignore-scripts
if ($LASTEXITCODE -ne 0) { throw "npm install 9router@$RouterVersion failed" }
$Src = Join-Path $Scratch 'node_modules\9router\app'
if (-not (Test-Path $Src)) {
throw "9router@$RouterVersion did not install to expected layout ($Src missing)"
}
Pop-Location
if (Test-Path $Dest) { Remove-Item -Recurse -Force $Dest }
New-Item -ItemType Directory -Force -Path $Dest | Out-Null
robocopy $Src $Dest /E /NJH /NJS /NDL /NFL /NP /MT:8 | Out-Null
if ($LASTEXITCODE -ge 8) { throw "robocopy failed staging 9router (exit $LASTEXITCODE)" }
$global:LASTEXITCODE = 0
Write-Host "9router staged at: $Dest"
} finally {
if (Test-Path $Scratch) { Remove-Item -Recurse -Force $Scratch }
}