Files
bun.sh/scripts/vs-shell.ps1
2024-09-11 08:24:50 -07:00

47 lines
1.3 KiB
PowerShell
Executable File

# Ensures that commands run in a Visual Studio environment.
# This is required to run commands like cmake and ninja on Windows.
$ErrorActionPreference = "Stop"
if($env:VSINSTALLDIR -eq $null) {
Write-Host "Loading Visual Studio environment, this may take a second..."
$vswhere = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"
if (!(Test-Path $vswhere)) {
throw "Command not found: vswhere (did you install Visual Studio?)"
}
$vsDir = (& $vswhere -prerelease -latest -property installationPath)
if ($vsDir -eq $null) {
$vsDir = Get-ChildItem -Path "C:\Program Files\Microsoft Visual Studio\2022" -Directory
if ($vsDir -eq $null) {
throw "Visual Studio directory not found."
}
$vsDir = $vsDir.FullName
}
Push-Location $vsDir
try {
$vsShell = (Join-Path -Path $vsDir -ChildPath "Common7\Tools\Launch-VsDevShell.ps1")
. $vsShell -Arch amd64 -HostArch amd64
} finally {
Pop-Location
}
}
if($env:VSCMD_ARG_TGT_ARCH -eq "x86") {
throw "Visual Studio environment is targeting 32 bit, but only 64 bit is supported."
}
if ($args.Count -gt 0) {
$command = $args[0]
$commandArgs = @()
if ($args.Count -gt 1) {
$commandArgs = @($args[1..($args.Count - 1)] | % {$_})
}
Write-Host "$ $command $commandArgs"
& $command $commandArgs
exit $LASTEXITCODE
}