#!/usr/bin/env pwsh $ErrorActionPreference = 'Stop' $Repo = "ind-igo/cx" $Binary = "cx.exe" $InstallDir = "$env:LOCALAPPDATA\cx\bin" # Detect architecture $Arch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture switch ($Arch) { 'X64' { $Target = "x86_64-pc-windows-msvc" } 'Arm64' { $Target = "aarch64-pc-windows-msvc" } default { Write-Error "Unsupported architecture: $Arch"; exit 1 } } $Url = "https://github.com/$Repo/releases/latest/download/cx-$Target.zip" Write-Host "Installing cx ($Target)..." $TmpDir = New-TemporaryFile | ForEach-Object { Remove-Item $_ New-Item -ItemType Directory -Path "$_.d" } try { $ZipPath = Join-Path $TmpDir "cx.zip" Invoke-WebRequest -Uri $Url -OutFile $ZipPath -UseBasicParsing Expand-Archive -Path $ZipPath -DestinationPath $TmpDir -Force if (-not (Test-Path $InstallDir)) { New-Item -ItemType Directory -Path $InstallDir -Force | Out-Null } Copy-Item (Join-Path $TmpDir $Binary) (Join-Path $InstallDir $Binary) -Force # Add to PATH if not already there $UserPath = [Environment]::GetEnvironmentVariable('Path', 'User') $PathEntries = if ($UserPath) { $UserPath -split ';' } else { @() } if ($InstallDir -notin $PathEntries) { $NewPath = if ($UserPath) { "$UserPath;$InstallDir" } else { $InstallDir } [Environment]::SetEnvironmentVariable('Path', $NewPath, 'User') Write-Host "Added $InstallDir to your PATH (restart your terminal to pick it up)" } Write-Host "cx installed to $InstallDir\$Binary" } finally { Remove-Item -Recurse -Force $TmpDir -ErrorAction SilentlyContinue }