From 2f12e12cbc6d57345f52f9eeddb49a42414d797e Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 9 Jul 2026 09:50:25 +0200 Subject: bootstrap: Verschiebe die Skripte nach 'bootstrap/' --- bootstrap/neovim-dict.sh | 33 ++++++++ bootstrap/neovim.sh | 198 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 231 insertions(+) create mode 100755 bootstrap/neovim-dict.sh create mode 100755 bootstrap/neovim.sh (limited to 'bootstrap') diff --git a/bootstrap/neovim-dict.sh b/bootstrap/neovim-dict.sh new file mode 100755 index 0000000..fa29728 --- /dev/null +++ b/bootstrap/neovim-dict.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -eu + +SPELL_DIR="$HOME/.local/share/nvim/site/spell" +mkdir -p "$SPELL_DIR" + +cd "$SPELL_DIR" + +download() { + url="$1" + file=$(basename "$url") + + if [ -f "$file" ]; then + echo "Skipping $file (already exists)" + return + fi + + echo "Downloading $file..." + if command -v wget >/dev/null 2>&1; then + wget -q --show-progress "$url" + elif command -v curl >/dev/null 2>&1; then + curl -fLO "$url" + else + echo "ERROR: neither wget nor curl found" + exit 1 + fi +} + +# Deutsche Wörterbücher +download "https://ftp.nluug.nl/pub/vim/runtime/spell/de.utf-8.spl" +download "https://ftp.nluug.nl/pub/vim/runtime/spell/de.utf-8.sug" + +echo "Deutsche Wörterbücher für Neovim installiert!" diff --git a/bootstrap/neovim.sh b/bootstrap/neovim.sh new file mode 100755 index 0000000..56a5247 --- /dev/null +++ b/bootstrap/neovim.sh @@ -0,0 +1,198 @@ +#!/bin/sh + +set -eu + +OS="$(uname -s)" + +die() { + printf '%s\n' "$*" >&2 + exit 1 +} + +have() { + command -v "$1" >/dev/null 2>&1 +} + +check_prerequisites() { + case "$OS" in + Darwin) + if ! have brew; then + die "Homebrew ist nicht installiert." + fi + ;; + FreeBSD) + if ! have doas; then + die "doas ist nicht installiert." + fi + ;; + *) + die "Nicht unterstütztes Betriebssystem: $OS" + ;; + esac +} + +setup_homebrew_env() { + case "$OS" in + Darwin) + export HOMEBREW_NO_AUTO_UPDATE=1 + export HOMEBREW_NO_INSTALL_CLEANUP=1 + ;; + esac +} + +install_pkg() { + binary="$1" + package="$2" + + if have "$binary"; then + printf "✓ %-32s vorhanden\n" "$binary" + return + fi + + printf "→ Installiere %s\n" "$package" + + case "$OS" in + Darwin) + brew install "$package" + ;; + FreeBSD) + doas pkg install -y "$package" + ;; + esac +} + +install_npm() { + binary="$1" + package="$2" + + if have "$binary"; then + printf "✓ %-32s vorhanden\n" "$binary" + return + fi + + if ! have npm; then + die "npm wurde nicht gefunden." + fi + + printf "→ Installiere npm-Paket %s\n" "$package" + npm install -g "$package" +} + +install_pip() { + python="$1" + package="$2" + + if "$python" -c "import $package" >/dev/null 2>&1; then + printf "✓ %-32s vorhanden\n" "$package" + return + fi + + printf "→ Installiere Python-Paket %s\n" "$package" + env \ + -u C_INCLUDE_PATH \ + -u CPLUS_INCLUDE_PATH \ + -u LIBRARY_PATH \ + "$python" -m pip install --no-cache-dir "$package" +} + +setup_python_provider() { + VENV="$HOME/.local/venv/nvim" + PYTHON="${PYTHON:-python3}" + + if ! have "$PYTHON"; then + die "Python wurde nicht gefunden." + fi + + if [ ! -x "$VENV/bin/python" ]; then + printf "→ Erzeuge Python-Venv %s\n" "$VENV" + + mkdir -p "$(dirname "$VENV")" + "$PYTHON" -m venv "$VENV" + fi + + install_pip "$VENV/bin/python" pynvim +} + +install_prerequisites() { + install_pkg curl curl + install_pkg git git + install_pkg node node + install_pkg python3 python +} + +install_providers() { + install_npm neovim-node-host neovim + setup_python_provider +} + +install_formatters() { + install_pkg gawk gawk + install_pkg jq jq + install_npm prettier prettier + install_pkg ruff ruff + install_pkg shfmt shfmt + install_pkg stylua stylua + install_pkg yamlfmt yamlfmt + + case "$OS" in + Darwin) + install_pkg clang-format clang-format + ;; + FreeBSD) + install_pkg xmllint libxml2 + ;; + esac +} + +install_tools() { + install_pkg rg ripgrep + + case "$OS" in + Darwin) + install_pkg gmake make + install_pkg fd fd + install_pkg tree-sitter tree-sitter + ;; + FreeBSD) + install_pkg gmake gmake + install_pkg fd fd-find + install_pkg tree-sitter tree-sitter-cli + ;; + esac +} + +install_lsp() { + install_npm basedpyright-langserver basedpyright + install_npm bash-language-server bash-language-server + + case "$OS" in + Darwin) + install_pkg shellcheck shellcheck + ;; + FreeBSD) + install_pkg shellcheck hs-ShellCheck + ;; + esac + + install_pkg clangd llvm + install_npm vscode-html-language-server vscode-langservers-extracted + install_npm vscode-json-language-server vscode-langservers-extracted + install_pkg lua-language-server lua-language-server + install_npm prisma-language-server @prisma/language-server + install_npm vtsls @vtsls/language-server +} + +main() { + check_prerequisites + setup_homebrew_env + + install_prerequisites + install_providers + install_formatters + install_tools + install_lsp + + printf "\nBootstrap abgeschlossen.\n" +} + +main "$@" -- cgit v1.3