Files
yvgude--lean-ctx/install.ps1
T
wehub-resource-sync 26382a7ac6
CI / Test (macos-latest) (push) Waiting to run
CI / Test (windows-latest) (push) Waiting to run
CI / Build (no embeddings / no ORT) (push) Waiting to run
CI / Format (push) Waiting to run
CI / Cookbook (Node) (push) Waiting to run
CI / Pi Extension (Node) (push) Waiting to run
CI / Rust SDK (lean-ctx-client) (push) Waiting to run
CI / Embed SDK (lean-ctx-sdk) (push) Waiting to run
CI / Python SDK (leanctx) (push) Waiting to run
CI / Hermes Plugin (Python) (push) Waiting to run
CI / SDK Conformance Matrix (push) Waiting to run
CI / Coverage (push) Waiting to run
CI / cargo-deny (push) Waiting to run
CI / Adversarial Safety (push) Waiting to run
CodeQL / Analyze (javascript-typescript) (push) Waiting to run
JetBrains Plugin / Actionlint (push) Waiting to run
CI / Benchmarks (push) Waiting to run
CI / Output-Quality Gate (eval A/B) (push) Waiting to run
CI / Documentation (push) Waiting to run
CI / CI Green (push) Blocked by required conditions
CodeQL / Analyze (actions) (push) Waiting to run
CodeQL / Analyze (rust) (push) Waiting to run
JetBrains Plugin / Validation (push) Waiting to run
JetBrains Plugin / Build (push) Waiting to run
JetBrains Plugin / Test (push) Blocked by required conditions
Security Check / Security Scan (push) Waiting to run
CI / Test (ubuntu-latest) (push) Has started running
CI / Clippy (push) Has started running
chore: import upstream snapshot with attribution
2026-07-13 12:35:30 +08:00

102 lines
2.6 KiB
PowerShell

<#
install.ps1 - Build lean-ctx locally on Windows and install it into Cargo's bin directory.
Usage:
.\install.ps1
.\install.ps1 -BuildOnly
#>
param(
[switch]$BuildOnly,
[switch]$Help
)
$ErrorActionPreference = 'Stop'
if ($Help) {
Write-Host 'Usage: .\install.ps1 [-BuildOnly] [-Help]'
Write-Host ''
Write-Host ' (no args) Build lean-ctx locally and install it into Cargo''s bin directory'
Write-Host ' -BuildOnly Build only, do not install'
Write-Host ' -Help Show this help message'
exit 0
}
function Get-CargoBinDir {
if ($env:CARGO_HOME) {
return Join-Path $env:CARGO_HOME 'bin'
}
return Join-Path $HOME '.cargo\bin'
}
function Stop-RunningLeanCtx {
$existing = Get-Command lean-ctx -ErrorAction SilentlyContinue
if ($null -ne $existing) {
Write-Host 'Stopping running lean-ctx (if any)...'
try {
& $existing.Source stop | Out-Null
}
catch {
}
}
}
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$rustDir = Join-Path $scriptDir 'rust'
if (-not (Test-Path $rustDir -PathType Container)) {
throw "Rust project not found at $rustDir"
}
if (-not (Get-Command cargo -ErrorAction SilentlyContinue)) {
throw 'cargo not found. Install Rust from https://rustup.rs/'
}
$cargoBinDir = Get-CargoBinDir
$builtBinary = Join-Path $rustDir 'target\release\lean-ctx.exe'
$installedBinary = Join-Path $cargoBinDir 'lean-ctx.exe'
Write-Host 'lean-ctx Windows installer'
Write-Host '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'
Write-Host 'Mode: build from source'
Write-Host ''
Write-Host 'Building lean-ctx (release)...'
Push-Location $rustDir
try {
& cargo build --release
}
finally {
Pop-Location
}
if (-not (Test-Path $builtBinary -PathType Leaf)) {
throw "Build failed - binary not found at $builtBinary"
}
Write-Host "Built: $builtBinary"
if ($BuildOnly) {
Write-Host 'Done (build only).'
exit 0
}
New-Item -ItemType Directory -Path $cargoBinDir -Force | Out-Null
$tempBinary = Join-Path $cargoBinDir ('.lean-ctx.new.' + $PID + '.exe')
Copy-Item -Path $builtBinary -Destination $tempBinary -Force
Stop-RunningLeanCtx
Move-Item -Path $tempBinary -Destination $installedBinary -Force
Write-Host "Installed: $installedBinary"
$pathEntries = @($env:Path -split ';' | Where-Object { $_ })
if ($pathEntries -notcontains $cargoBinDir) {
Write-Host ''
Write-Warning "$cargoBinDir is not in your PATH."
Write-Host 'Add it to your user PATH, then restart your shell.'
}
Write-Host ''
Write-Host 'Done! Verify with: lean-ctx --version'