From b04598d71f18227af87cb04890b4dee5d38bd753 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 11:20:49 +0200 Subject: windows: Bootstrap-Skripte nach bootstrap-win/ verschoben, -win-Suffix entfernt bootstrap/neovim-win.ps1 -> bootstrap-win/neovim.ps1 bootstrap/neovim-dict-win.ps1 -> bootstrap-win/neovim-dict.ps1 Eigenes Verzeichnis statt Suffix pro Datei, analog zu windows/ fuer gmake.cmd. bootstrap/ (POSIX, macOS/FreeBSD) bleibt unveraendert. Referenzen in neovim-windows-setup.md aktualisiert. Nebenbei: eine unerklaerte, nicht selbst vorgenommene Aenderung an nvim/lua/config/treesitter.lua (fuegte 'powershell' zur Sprachliste hinzu) verworfen statt versehentlich mit einzuchecken. --- bootstrap/neovim-win.ps1 | 177 ----------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 bootstrap/neovim-win.ps1 (limited to 'bootstrap/neovim-win.ps1') diff --git a/bootstrap/neovim-win.ps1 b/bootstrap/neovim-win.ps1 deleted file mode 100644 index 8af6140..0000000 --- a/bootstrap/neovim-win.ps1 +++ /dev/null @@ -1,177 +0,0 @@ -#Requires -Version 5.1 -<# - Windows-natives Pendant zu bootstrap/neovim.sh (macOS/FreeBSD). - bootstrap/neovim.sh bleibt unveraendert - dieses Skript ist bewusst - eigenstaendig, da sich die Paketquellen (winget/npm statt brew/pkg) und - das Fehlerverhalten zu stark unterscheiden fuer ein gemeinsames Skript. - - Nutzt ausschliesslich native Windows-Werkzeuge (winget, npm, pwsh/ - powershell.exe) - keine Git-Bash- oder WSL-Abhaengigkeit. - - Aufruf (PowerShell, keine Admin-Rechte noetig): - .\bootstrap\neovim-win.ps1 - - Hinweis: Einzelne winget-Paket-IDs (v.a. GnuWin32.Gawk, GnuWin32.Libxml2, - google.yamlfmt, mvdan.shfmt, astral-sh.ruff) konnten in dieser Session - nicht gegen eine aktuelle winget-Quelle verifiziert werden. Schlaegt eine - Installation fehl, meldet das Skript das als Warnung (bricht nicht ab) - und nennt den Befehl zum manuellen Nachschlagen ("winget search "). - - C-Compiler fuer nvim-treesitter: kein winget-Paket enthalten, da MSVC auf - den Zielsystemen bereits vorhanden ist. Neovim muss dafuer aus einer - "Developer PowerShell for VS" gestartet werden (siehe Install-Tools). -#> - -$ErrorActionPreference = "Stop" -$script:Failures = @() - -function Write-Ok($msg) { - Write-Host "OK $msg" -ForegroundColor Green -} - -function Write-Step($msg) { - Write-Host "==> $msg" -ForegroundColor Cyan -} - -function Write-Skip($msg) { - Write-Host "- $msg bereits vorhanden" -ForegroundColor DarkGray -} - -function Write-Warn($msg) { - Write-Host "! $msg" -ForegroundColor Yellow - $script:Failures += $msg -} - -function Test-CommandExists([string]$Name) { - return [bool](Get-Command $Name -ErrorAction SilentlyContinue) -} - -function Install-WingetPackage([string]$Binary, [string]$Id) { - if (Test-CommandExists $Binary) { - Write-Skip $Binary - return - } - - Write-Step "winget install $Id" - winget install --id $Id -e --source winget --accept-package-agreements --accept-source-agreements --silent | Out-Null - - if ($LASTEXITCODE -ne 0) { - Write-Warn "winget install $Id fehlgeschlagen (Binary '$Binary' nicht gefunden). Pruefen mit: winget search $Id" - return - } - - Write-Ok $Id -} - -function Install-NpmPackage([string]$Binary, [string]$Package) { - if (Test-CommandExists $Binary) { - Write-Skip $Binary - return - } - - if (-not (Test-CommandExists "npm")) { - Write-Warn "npm wurde nicht gefunden - kann '$Package' nicht installieren." - return - } - - Write-Step "npm install -g $Package" - npm install -g $Package | Out-Null - - if ($LASTEXITCODE -ne 0) { - Write-Warn "npm install -g $Package fehlgeschlagen." - return - } - - Write-Ok $Package -} - -function Test-Prerequisites { - if (-not (Test-CommandExists "winget")) { - Write-Host "Fehler: winget wurde nicht gefunden. 'App Installer' aus dem Microsoft Store installieren." -ForegroundColor Red - exit 1 - } -} - -function Update-SessionPath { - # winget/npm-Installer tragen PATH-Aenderungen in die Registry (User- - # und/oder Machine-Scope) ein, aber der laufende PowerShell-Prozess - # bekommt das nicht automatisch mit. Ohne diesen Refresh wuerde z.B. - # "npm" gleich im Anschluss an die Node-Installation als "nicht - # gefunden" gemeldet, obwohl es gerade erst installiert wurde. - $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") - $user = [Environment]::GetEnvironmentVariable("PATH", "User") - $env:PATH = "$machine;$user" -} - -function Install-Prerequisites { - Install-WingetPackage -Binary "git" -Id "Git.Git" - Install-WingetPackage -Binary "node" -Id "OpenJS.NodeJS.LTS" - Update-SessionPath -} - -function Install-Formatters { - Install-WingetPackage -Binary "jq" -Id "jqlang.jq" - Install-NpmPackage -Binary "prettier" -Package "prettier" - Install-WingetPackage -Binary "ruff" -Id "astral-sh.ruff" - Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt" - Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua" - Install-WingetPackage -Binary "yamlfmt" -Id "google.yamlfmt" - Install-WingetPackage -Binary "gawk" -Id "GnuWin32.Gawk" - Install-WingetPackage -Binary "xmllint" -Id "GnuWin32.Libxml2" -} - -function Install-Tools { - Install-WingetPackage -Binary "rg" -Id "BurntSushi.ripgrep.MSVC" - Install-WingetPackage -Binary "fd" -Id "sharkdp.fd" - Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli" - - # C-Compiler fuer nvim-treesitter: kein winget-Paket noetig, MSVC (cl.exe) - # ist auf diesen Systemen bereits vorhanden. nvim-treesitter findet cl.exe - # automatisch, ABER nur wenn INCLUDE/LIB gesetzt sind - das passiert nicht - # in einer normalen PowerShell, sondern nur in einer "Developer PowerShell - # for VS" bzw. "x64 Native Tools Command Prompt". Neovim also immer aus - # so einer Shell heraus starten, sonst schlaegt die Parser-Kompilierung - # mit "cannot find
.h" o.ae. fehl, obwohl cl.exe selbst gefunden wird. - - # opt.makeprg = "gmake" (nvim/lua/config/options.lua) - Alias liegt in - # windows/bin/gmake.cmd, reicht an "make" durch. Einmalig windows\bin - # zum PATH hinzufuegen (PowerShell, User-Scope, nicht setx mit %PATH% - # verwenden - das wuerde den gesamten Prozess-PATH inkl. System-Anteil - # dauerhaft in den User-PATH kopieren): - # $userPath = [Environment]::GetEnvironmentVariable("PATH", "User") - # [Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\dotfiles\windows\bin", "User") - Install-WingetPackage -Binary "make" -Id "GnuWin32.Make" -} - -function Install-Lsp { - Install-NpmPackage -Binary "basedpyright-langserver" -Package "basedpyright" - Install-NpmPackage -Binary "bash-language-server" -Package "bash-language-server" - Install-WingetPackage -Binary "clangd" -Id "LLVM.LLVM" - Install-WingetPackage -Binary "shellcheck" -Id "koalaman.shellcheck" - Install-NpmPackage -Binary "vscode-html-language-server" -Package "vscode-langservers-extracted" - Install-NpmPackage -Binary "vscode-json-language-server" -Package "vscode-langservers-extracted" - Install-WingetPackage -Binary "lua-language-server" -Id "LuaLS.lua-language-server" - Install-NpmPackage -Binary "prisma-language-server" -Package "@prisma/language-server" - Install-NpmPackage -Binary "vtsls" -Package "@vtsls/language-server" -} - -function Main { - Test-Prerequisites - - Install-Prerequisites - Install-Formatters - Install-Tools - Install-Lsp - - Write-Host "" - if ($script:Failures.Count -eq 0) { - Write-Host "Bootstrap abgeschlossen." -ForegroundColor Green - } else { - Write-Host "Bootstrap abgeschlossen, mit $($script:Failures.Count) Warnung(en):" -ForegroundColor Yellow - foreach ($f in $script:Failures) { - Write-Host " - $f" -ForegroundColor Yellow - } - } -} - -Main -- cgit v1.3