Newer
Older
TelosDB / .scripts / build_with_toolchain.ps1
@楽曲作りまくりおじさん 楽曲作りまくりおじさん 8 hours ago 2 KB chore: prepare for history rewrite
Param(
    [Parameter(ValueFromRemainingArguments=$true)]
    [string[]]$Args
)

function Get-LatestDir($root) {
    if (-not (Test-Path $root)) { return $null }
    Get-ChildItem -Path $root -Directory -ErrorAction SilentlyContinue |
        Where-Object { $_.Name -match '^[0-9]' } |
        Sort-Object {[version]($_.Name)} -Descending |
        Select-Object -First 1 -ExpandProperty FullName
}

# Windows Kits (Program Files (x86))
$kitsRoot = "${env:ProgramFiles(x86)}\Windows Kits\10\bin"
$kitsLatest = Get-LatestDir $kitsRoot
$kitsBinX64 = if ($kitsLatest) { Join-Path $kitsLatest 'x64' } else { $null }

# MSVC (search common Program Files locations)
$msvcDirs = @()
$possibleRoots = @(
    "${env:ProgramFiles}\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC",
    "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC"
)
foreach ($pr in $possibleRoots) {
    if (Test-Path $pr) {
        $msvcDirs += Get-ChildItem -Path $pr -Directory -ErrorAction SilentlyContinue | Select-Object -ExpandProperty FullName
    }
}
$msvcLatest = $null
if ($msvcDirs.Count -gt 0) {
    $msvcLatest = $msvcDirs | Sort-Object { [version]((Split-Path $_ -Leaf)) } -Descending | Select-Object -First 1
}
$msvcBin = if ($msvcLatest) { Join-Path $msvcLatest 'bin\Hostx64\x64' } else { $null }

$added = @()
if ($msvcBin -and (Test-Path $msvcBin)) { $env:PATH = $msvcBin + ';' + $env:PATH; $added += $msvcBin }
if ($kitsBinX64 -and (Test-Path $kitsBinX64)) { $env:PATH = $kitsBinX64 + ';' + $env:PATH; $added += $kitsBinX64 }

Write-Host "Prepended to PATH:" -ForegroundColor Cyan
if ($added.Count -eq 0) { Write-Host " (no toolchain bins found; building with current PATH)" -ForegroundColor Yellow }
foreach ($p in $added) { Write-Host " - $p" }

# Execute prepare step then build (same sequence as existing package.json 'build')
try {
    & node scripts/prepare-resources.cjs
    if ($LASTEXITCODE -ne 0) { throw 'prepare-resources.cjs failed' }
} catch {
    Write-Error "prepare-resources.cjs failed: $_"
    exit 1
}

if (Get-Command bun -ErrorAction SilentlyContinue) {
    & bun run build @Args
    exit $LASTEXITCODE
} else {
    & tauri build --config src/backend/tauri.conf.json @Args
    exit $LASTEXITCODE
}