82 lines
1.9 KiB
Bash
82 lines
1.9 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
BASE=$(git rev-parse --show-toplevel)
|
||
|
LSP_BIN_PATH=$HOME/.local/bin
|
||
|
|
||
|
default_langs="ts rust"
|
||
|
lsp_langs=${@:-"$default_langs"}
|
||
|
|
||
|
pfx="~~~~~ "
|
||
|
heading() {
|
||
|
echo
|
||
|
echo $pfx $1
|
||
|
}
|
||
|
|
||
|
get_platform() {
|
||
|
case "$(uname -s)" in
|
||
|
Linux*) platform=Linux;;
|
||
|
Darwin*) platform=Mac;;
|
||
|
CYGWIN*) platform=Cygwin;;
|
||
|
MINGW*) platform=MinGw;;
|
||
|
*) platform="UNKNOWN:${unameOut}"
|
||
|
esac
|
||
|
echo $platform
|
||
|
}
|
||
|
|
||
|
heading "Linking config"
|
||
|
for f in `find -E . -regex ".*\.vim$|.*\.lua$"`; do
|
||
|
p=${f#*/}
|
||
|
echo -e '\t' ${p}
|
||
|
path=~/.config/nvim/${p}
|
||
|
rm -rf ~/.config/nvim/${p}
|
||
|
mkdir -p $(dirname "${path}")
|
||
|
ln -s ${BASE}/${p} ~/.config/nvim/${p}
|
||
|
done
|
||
|
|
||
|
if [[ ! -e ~/.local/share/nvim/site/pack/packer/start/packer.nvim ]]; then
|
||
|
heading "Installing packer"
|
||
|
git clone https://github.com/wbthomason/packer.nvim\
|
||
|
~/.local/share/nvim/site/pack/packer/start/packer.nvim
|
||
|
fi
|
||
|
|
||
|
heading "Installing plugins"
|
||
|
nvim --headless +PackerInstall +qa
|
||
|
nvim --headless +TSUpdate +qa
|
||
|
echo
|
||
|
|
||
|
fn_exists() { declare -F "$1" > /dev/null; }
|
||
|
warn_path=false
|
||
|
|
||
|
install_ts() {
|
||
|
if [[ -z $(which npm) ]]; then
|
||
|
echo "npm not installed"
|
||
|
return
|
||
|
fi
|
||
|
npm install -g vscode-html-languageserver-bin typescript typescript-language-server vscode-css-languageserver-bin prettier
|
||
|
}
|
||
|
|
||
|
install_rust() {
|
||
|
if [[ ! -e ~/.local/bin/rust-analyzer ]]; then
|
||
|
mkdir -p ${LSP_BIN_PATH}
|
||
|
curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-$(get_platform) -o ~/.local/bin/rust-analyzer
|
||
|
chmod +x ~/.local/bin/rust-analyzer
|
||
|
warn_path=true
|
||
|
else
|
||
|
echo "already installed"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
for lang in ${lsp_langs}; do
|
||
|
if fn_exists install_$lang ; then
|
||
|
heading "Installing $lang language server"
|
||
|
install_$lang
|
||
|
else
|
||
|
echo $lang setup not implemented
|
||
|
echo
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [[ ${warn_path} = true ]]; then
|
||
|
echo ""
|
||
|
echo "Ensure ${LSP_BIN_PATH} is available in your \$PATH variable"
|
||
|
fi
|