107 lines
2.6 KiB
Bash
Executable File
107 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
##makedesc: Install nvim + lazyvim
|
|
|
|
set -eo pipefail
|
|
|
|
installed() { command -v "$1" >/dev/null 2>&1; }
|
|
|
|
# https://www.lazyvim.org/installation
|
|
# https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/
|
|
|
|
# TODO https://github.com/rockerBOO/awesome-neovim
|
|
# TODO https://docs.astronvim.com
|
|
|
|
isMac() { [ "$(uname -s)" = "Darwin" ]; }
|
|
isLinux() { [ "$(uname -s)" = "Linux" ]; }
|
|
|
|
if isLinux; then
|
|
url="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz"
|
|
nvimDirName="nvim-linux-x86_64"
|
|
elif isMac; then
|
|
url="https://github.com/neovim/neovim/releases/latest/download/nvim-macos-x86_64.tar.gz"
|
|
nvimDirName="nvim-macos-x86_64"
|
|
fi
|
|
|
|
downloadPath="$HOME/install"
|
|
downloadTarGz="$downloadPath/nvim.tar.gz"
|
|
installPath="/opt/nvim"
|
|
cfgPath="$HOME/.config/nvim"
|
|
nvimDataPaths=(
|
|
"$cfgPath"
|
|
"$HOME/.local/share/nvim"
|
|
"$HOME/.local/state/nvim"
|
|
"$HOME/.cache/nvim"
|
|
)
|
|
|
|
backup() {
|
|
echo "Backup configuration files..."
|
|
t=$(date +'%s')
|
|
for path in "${nvimDataPaths[@]}"; do
|
|
[[ -d "$path" ]] && cp -rv "$path" "$path-$t.bak"
|
|
done
|
|
echo "Done"
|
|
}
|
|
|
|
install() {
|
|
echo
|
|
echo "==============================================="
|
|
echo "Installing neovim"
|
|
echo "==============================================="
|
|
echo
|
|
|
|
backup
|
|
if installed wget; then
|
|
wget -q --show-progress "$url" -O "$downloadTarGz"
|
|
else
|
|
curl -fsSL "$url" -o "$downloadTarGz"
|
|
fi
|
|
tar -xzf "$downloadTarGz" -C "$downloadPath"
|
|
|
|
sudo rm -rf "$installPath"
|
|
sudo mv "$downloadPath/$nvimDirName" "$installPath"
|
|
|
|
if [ -d "$cfgPath" ]; then
|
|
rm -rf "$cfgPath"
|
|
fi
|
|
git clone --depth=1 --single-branch https://github.com/LazyVim/starter "$cfgPath"
|
|
rm -rf "$cfgPath/.git"
|
|
|
|
if command -v update-desktop-database >/dev/null 2>&1; then
|
|
sudo update-desktop-database
|
|
fi
|
|
if command -v xdg-desktop-menu >/dev/null 2>&1; then
|
|
xdg-desktop-menu forceupdate
|
|
fi
|
|
|
|
echo
|
|
echo "Finish!"
|
|
nvim -v
|
|
echo
|
|
}
|
|
|
|
remove() {
|
|
echo
|
|
echo "==============================================="
|
|
echo "Removing neovim"
|
|
echo "==============================================="
|
|
echo
|
|
|
|
sudo rm -rf "$installPath"
|
|
for path in "${nvimDataPaths[@]}"; do
|
|
rm -rf "$path"
|
|
done
|
|
find "$HOME/.config" -type f -path "*/nvim*" -exec rm -rfv {} + 2>/dev/null || true
|
|
find "$HOME/.local" -type f -path "*/nvim*" -exec rm -rfv {} + 2>/dev/null || true
|
|
|
|
echo
|
|
echo "Finish!"
|
|
echo
|
|
}
|
|
|
|
case "$1" in
|
|
b|backup) backup ;;
|
|
r|remove|d|delete|p|purge) remove ;;
|
|
*) install ;;
|
|
esac
|
|
|