aboutsummaryrefslogtreecommitdiff
path: root/scripts/bootstrap-nvim.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/bootstrap-nvim.sh')
-rwxr-xr-xscripts/bootstrap-nvim.sh198
1 files changed, 0 insertions, 198 deletions
diff --git a/scripts/bootstrap-nvim.sh b/scripts/bootstrap-nvim.sh
deleted file mode 100755
index 56a5247..0000000
--- a/scripts/bootstrap-nvim.sh
+++ /dev/null
@@ -1,198 +0,0 @@
1#!/bin/sh
2
3set -eu
4
5OS="$(uname -s)"
6
7die() {
8 printf '%s\n' "$*" >&2
9 exit 1
10}
11
12have() {
13 command -v "$1" >/dev/null 2>&1
14}
15
16check_prerequisites() {
17 case "$OS" in
18 Darwin)
19 if ! have brew; then
20 die "Homebrew ist nicht installiert."
21 fi
22 ;;
23 FreeBSD)
24 if ! have doas; then
25 die "doas ist nicht installiert."
26 fi
27 ;;
28 *)
29 die "Nicht unterstütztes Betriebssystem: $OS"
30 ;;
31 esac
32}
33
34setup_homebrew_env() {
35 case "$OS" in
36 Darwin)
37 export HOMEBREW_NO_AUTO_UPDATE=1
38 export HOMEBREW_NO_INSTALL_CLEANUP=1
39 ;;
40 esac
41}
42
43install_pkg() {
44 binary="$1"
45 package="$2"
46
47 if have "$binary"; then
48 printf "✓ %-32s vorhanden\n" "$binary"
49 return
50 fi
51
52 printf "→ Installiere %s\n" "$package"
53
54 case "$OS" in
55 Darwin)
56 brew install "$package"
57 ;;
58 FreeBSD)
59 doas pkg install -y "$package"
60 ;;
61 esac
62}
63
64install_npm() {
65 binary="$1"
66 package="$2"
67
68 if have "$binary"; then
69 printf "✓ %-32s vorhanden\n" "$binary"
70 return
71 fi
72
73 if ! have npm; then
74 die "npm wurde nicht gefunden."
75 fi
76
77 printf "→ Installiere npm-Paket %s\n" "$package"
78 npm install -g "$package"
79}
80
81install_pip() {
82 python="$1"
83 package="$2"
84
85 if "$python" -c "import $package" >/dev/null 2>&1; then
86 printf "✓ %-32s vorhanden\n" "$package"
87 return
88 fi
89
90 printf "→ Installiere Python-Paket %s\n" "$package"
91 env \
92 -u C_INCLUDE_PATH \
93 -u CPLUS_INCLUDE_PATH \
94 -u LIBRARY_PATH \
95 "$python" -m pip install --no-cache-dir "$package"
96}
97
98setup_python_provider() {
99 VENV="$HOME/.local/venv/nvim"
100 PYTHON="${PYTHON:-python3}"
101
102 if ! have "$PYTHON"; then
103 die "Python wurde nicht gefunden."
104 fi
105
106 if [ ! -x "$VENV/bin/python" ]; then
107 printf "→ Erzeuge Python-Venv %s\n" "$VENV"
108
109 mkdir -p "$(dirname "$VENV")"
110 "$PYTHON" -m venv "$VENV"
111 fi
112
113 install_pip "$VENV/bin/python" pynvim
114}
115
116install_prerequisites() {
117 install_pkg curl curl
118 install_pkg git git
119 install_pkg node node
120 install_pkg python3 python
121}
122
123install_providers() {
124 install_npm neovim-node-host neovim
125 setup_python_provider
126}
127
128install_formatters() {
129 install_pkg gawk gawk
130 install_pkg jq jq
131 install_npm prettier prettier
132 install_pkg ruff ruff
133 install_pkg shfmt shfmt
134 install_pkg stylua stylua
135 install_pkg yamlfmt yamlfmt
136
137 case "$OS" in
138 Darwin)
139 install_pkg clang-format clang-format
140 ;;
141 FreeBSD)
142 install_pkg xmllint libxml2
143 ;;
144 esac
145}
146
147install_tools() {
148 install_pkg rg ripgrep
149
150 case "$OS" in
151 Darwin)
152 install_pkg gmake make
153 install_pkg fd fd
154 install_pkg tree-sitter tree-sitter
155 ;;
156 FreeBSD)
157 install_pkg gmake gmake
158 install_pkg fd fd-find
159 install_pkg tree-sitter tree-sitter-cli
160 ;;
161 esac
162}
163
164install_lsp() {
165 install_npm basedpyright-langserver basedpyright
166 install_npm bash-language-server bash-language-server
167
168 case "$OS" in
169 Darwin)
170 install_pkg shellcheck shellcheck
171 ;;
172 FreeBSD)
173 install_pkg shellcheck hs-ShellCheck
174 ;;
175 esac
176
177 install_pkg clangd llvm
178 install_npm vscode-html-language-server vscode-langservers-extracted
179 install_npm vscode-json-language-server vscode-langservers-extracted
180 install_pkg lua-language-server lua-language-server
181 install_npm prisma-language-server @prisma/language-server
182 install_npm vtsls @vtsls/language-server
183}
184
185main() {
186 check_prerequisites
187 setup_homebrew_env
188
189 install_prerequisites
190 install_providers
191 install_formatters
192 install_tools
193 install_lsp
194
195 printf "\nBootstrap abgeschlossen.\n"
196}
197
198main "$@"