| 1 | # One-off: OmniSharp folder + Marksman on User PATH (run: powershell -File ...) |
| 2 | $ErrorActionPreference = "Stop" |
| 3 | $omni = "C:\Users\dkara\Tools\omnisharp-win-x64-net6.0" |
| 4 | $marksDir = "C:\Users\dkara\Tools\marksman" |
| 5 | New-Item -ItemType Directory -Force -Path $marksDir | Out-Null |
| 6 | |
| 7 | $marksExe = Join-Path $marksDir "marksman.exe" |
| 8 | if (-not (Test-Path $marksExe)) { |
| 9 | Write-Host "Downloading Marksman 2026-02-08..." |
| 10 | Invoke-WebRequest -Uri "https://github.com/artempyanykh/marksman/releases/download/2026-02-08/marksman.exe" -OutFile $marksExe -UseBasicParsing |
| 11 | } |
| 12 | |
| 13 | function Add-UserPath { |
| 14 | param([string]$dir) |
| 15 | $userPath = [Environment]::GetEnvironmentVariable("Path", "User") |
| 16 | if ([string]::IsNullOrEmpty($userPath)) { $userPath = "" } |
| 17 | $parts = $userPath -split ";" | ForEach-Object { $_.Trim() } | Where-Object { $_ } |
| 18 | foreach ($p in $parts) { |
| 19 | if ($p -ieq $dir) { |
| 20 | Write-Host "PATH already contains: $dir" |
| 21 | return |
| 22 | } |
| 23 | } |
| 24 | $newPath = if ([string]::IsNullOrWhiteSpace($userPath)) { $dir } else { $userPath.TrimEnd(";") + ";" + $dir } |
| 25 | [Environment]::SetEnvironmentVariable("Path", $newPath, "User") |
| 26 | Write-Host "Added to User PATH: $dir" |
| 27 | } |
| 28 | |
| 29 | $omniExe = Join-Path $omni "OmniSharp.exe" |
| 30 | if (-not (Test-Path $omniExe)) { |
| 31 | Write-Error "OmniSharp.exe not found under $omni - unpack omnisharp-win-x64-net6.0.zip there first." |
| 32 | } |
| 33 | Add-UserPath $omni |
| 34 | Add-UserPath $marksDir |
| 35 | |
| 36 | $machinePath = [Environment]::GetEnvironmentVariable("Path", "Machine") |
| 37 | $userPathOnly = [Environment]::GetEnvironmentVariable("Path", "User") |
| 38 | $env:Path = $machinePath + ";" + $userPathOnly |
| 39 | |
| 40 | Write-Host "" |
| 41 | Write-Host "Smoke:" |
| 42 | & $omniExe -v 2>&1 | Select-Object -First 3 |
| 43 | & $marksExe --version 2>&1 |
| 44 | |