SIGN IN SIGN UP
# Define variables
$RepoOwner = "tstack" # Change this if you're using your fork
$RepoName = "lnav"
$ArtifactName = "lnav-master-windows-amd64.zip" # Update if needed
$InstallPath = "C:\Program Files\lnav"
# Get the latest run with artifacts
$LatestRunUrl = "https://api.github.com/repos/$RepoOwner/$RepoName/actions/runs"
$LatestRun = Invoke-RestMethod -Uri $LatestRunUrl -Headers @{ "Accept" = "application/vnd.github.v3+json" }
$RunId = $LatestRun.workflow_runs[0].id # Get latest run ID
# Get artifacts from the latest run
$ArtifactsUrl = "https://api.github.com/repos/$RepoOwner/$RepoName/actions/runs/$RunId/artifacts"
$Artifacts = Invoke-RestMethod -Uri $ArtifactsUrl -Headers @{ "Accept" = "application/vnd.github.v3+json" }
# Find the Windows artifact
$Artifact = $Artifacts.artifacts | Where-Object { $_.name -eq $ArtifactName }
if (-not $Artifact) {
Write-Host "❌ Windows artifact not found. Exiting..."
exit 1
}
# Download the artifact
$DownloadUrl = $Artifact.archive_download_url
$ZipPath = "$env:TEMP\lnav-windows.zip"
# GitHub API requires authentication to download workflow artifacts
$GitHubToken = Read-Host "Enter GitHub Token (with repo read permissions)" -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($GitHubToken)
$PlainToken = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Invoke-WebRequest -Uri $DownloadUrl -Headers @{ "Authorization" = "token $PlainToken" } -OutFile $ZipPath
# Extract and install
$ExtractPath = "$env:TEMP\lnav"
Expand-Archive -Path $ZipPath -DestinationPath $ExtractPath -Force
# Move to install location
if (Test-Path $InstallPath) {
Remove-Item -Recurse -Force $InstallPath
}
Move-Item -Path "$ExtractPath\*" -Destination $InstallPath -Force
# Add to PATH
$SystemPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::Machine)
if ($SystemPath -notlike "*$InstallPath*") {
[System.Environment]::SetEnvironmentVariable("Path", "$SystemPath;$InstallPath", [System.EnvironmentVariableTarget]::Machine)
}
Write-Host "✅ lnav installed successfully! Run 'lnav' in a new terminal."