1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Param()
$ErrorActionPreference = 'Stop'
$repo = if ($env:PANACHE_REPO) { $env:PANACHE_REPO } else { 'jolars/panache' }
$installDir = if ($env:PANACHE_INSTALL_DIR) { $env:PANACHE_INSTALL_DIR } else { Join-Path $env:LOCALAPPDATA 'Programs\panache\bin' }
$arch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()
switch ($arch) {
'X64' { $target = 'x86_64-pc-windows-msvc' }
'Arm64' { $target = 'aarch64-pc-windows-msvc' }
default { throw "Unsupported Windows architecture: $arch" }
}
$asset = "panache-$target.zip"
$url = "https://github.com/$repo/releases/latest/download/$asset"
$tmpDir = Join-Path ([System.IO.Path]::GetTempPath()) ("panache-install-" + [System.Guid]::NewGuid().ToString('N'))
New-Item -ItemType Directory -Path $tmpDir | Out-Null
try {
$zipPath = Join-Path $tmpDir $asset
Write-Host "Downloading $asset..."
Invoke-WebRequest -Uri $url -OutFile $zipPath
Expand-Archive -Path $zipPath -DestinationPath $tmpDir -Force
New-Item -ItemType Directory -Path $installDir -Force | Out-Null
Copy-Item -Path (Join-Path $tmpDir 'panache.exe') -Destination (Join-Path $installDir 'panache.exe') -Force
Write-Host "Installed panache to $(Join-Path $installDir 'panache.exe')"
if (-not (($env:Path -split ';') -contains $installDir)) {
Write-Host "Note: $installDir is not in PATH."
}
}
finally {
Remove-Item -Recurse -Force $tmpDir -ErrorAction SilentlyContinue
}