# 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."