mirror of
https://github.com/LunarVim/LunarVim.git
synced 2024-09-21 11:05:08 +02:00
84 lines
2.2 KiB
Text
84 lines
2.2 KiB
Text
|
#!/usr/bin/env bash
|
||
|
|
||
|
set -eu pipefall
|
||
|
|
||
|
declare -r LV_INSTALL_PREFIX="${INSTALL_PREFIX:-"$HOME/.local"}"
|
||
|
declare -r RELEASE_VER="${RELEASE_VER:-latest}" # can be set to nightly
|
||
|
|
||
|
declare ARCHIVE_NAME
|
||
|
declare RELEASE_NAME
|
||
|
declare OS
|
||
|
|
||
|
OS="$(uname -s)"
|
||
|
|
||
|
if [ "$OS" == "Linux" ]; then
|
||
|
ARCHIVE_NAME="nvim-linux64"
|
||
|
RELEASE_NAME="nvim-linux64"
|
||
|
elif [ "$OS" == "Darwin" ]; then
|
||
|
ARCHIVE_NAME="nvim-macos"
|
||
|
# for some reason the archive has a different name
|
||
|
RELEASE_NAME="nvim-osx64"
|
||
|
else
|
||
|
echo "$OS platform is not supported currently"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
declare -r RELEASE_URL="https://github.com/neovim/neovim/releases/$RELEASE_VER/download/$ARCHIVE_NAME.tar.gz"
|
||
|
declare -r CHECKSUM_URL="$RELEASE_URL.sha256sum"
|
||
|
|
||
|
DOWNLOAD_DIR="$(mktemp -d)"
|
||
|
readonly DOWNLOAD_DIR
|
||
|
|
||
|
RELEASE_SHA="$(curl -Ls "$CHECKSUM_URL" | awk '{print $1}')"
|
||
|
readonly RELEASE_SHA
|
||
|
|
||
|
function main() {
|
||
|
if [ ! -d "$LV_INSTALL_PREFIX" ]; then
|
||
|
mkdir -p "$LV_INSTALL_PREFIX" || __invalid__prefix__handler
|
||
|
fi
|
||
|
download_neovim
|
||
|
verify_neovim
|
||
|
install_neovim
|
||
|
}
|
||
|
|
||
|
function download_neovim() {
|
||
|
echo "Downloading Neovim's binary from $RELEASE_VER release.."
|
||
|
if ! curl --progress-bar --fail -L "$RELEASE_URL" -o "$DOWNLOAD_DIR/$ARCHIVE_NAME.tar.gz"; then
|
||
|
echo "Download failed. Check that the release/filename are correct."
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "Download complete!"
|
||
|
}
|
||
|
|
||
|
function verify_neovim() {
|
||
|
echo "Verifying the installation.."
|
||
|
DOWNLOADED_SHA="$(sha256sum "$DOWNLOAD_DIR/$ARCHIVE_NAME.tar.gz" | awk '{print $1}')"
|
||
|
|
||
|
if [ "$RELEASE_SHA" != "$DOWNLOADED_SHA" ]; then
|
||
|
echo "Error! checksum mis-match."
|
||
|
echo "Expected: $RELEASE_SHA but got: $DOWNLOADED_SHA"
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "Verification complete!"
|
||
|
}
|
||
|
|
||
|
function install_neovim() {
|
||
|
|
||
|
echo "Installing Neovim.."
|
||
|
pushd "$DOWNLOAD_DIR"
|
||
|
tar -xzf "$DOWNLOAD_DIR/$ARCHIVE_NAME.tar.gz"
|
||
|
popd
|
||
|
# https://dev.to/ackshaey/macos-vs-linux-the-cp-command-will-trip-you-up-2p00
|
||
|
cp -r "$DOWNLOAD_DIR/$RELEASE_NAME/." "$LV_INSTALL_PREFIX"
|
||
|
echo "Installation complete!"
|
||
|
echo "Now you can run $LV_INSTALL_PREFIX/bin/nvim"
|
||
|
}
|
||
|
|
||
|
function __invalid__prefix__handler() {
|
||
|
echo "Error! Invalid value for LV_INSTALL_PREFIX: [$INSTALL_PREFIX]"
|
||
|
echo "Please verify that the folder exists and re-run the installer!"
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
main "$@"
|