| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- #!/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
 
-   if [ "$RELEASE_VER" == "nightly" ]; then
 
-     ARCHIVE_NAME="nvim-macos-x86_64"
 
-     RELEASE_NAME="nvim-macos-x86_64"
 
-   else
 
-     ARCHIVE_NAME="nvim-macos"
 
-     # for some reason the archive has a different name
 
-     RELEASE_NAME="nvim-osx64"
 
-   fi
 
- else
 
-   echo "$OS platform is not supported currently"
 
-   exit 1
 
- fi
 
- if [[ "${RELEASE_VER}" == "latest" ]]; then
 
-   declare -r RELEASE_URL="https://github.com/neovim/neovim/releases/${RELEASE_VER}/download/${ARCHIVE_NAME}.tar.gz"
 
- else
 
-   declare -r RELEASE_URL="https://github.com/neovim/neovim/releases/download/${RELEASE_VER}/${ARCHIVE_NAME}.tar.gz"
 
- fi
 
- 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="$(openssl dgst -sha256 "$DOWNLOAD_DIR/$ARCHIVE_NAME.tar.gz" | awk '{print $2}')"
 
-   if [ "$RELEASE_SHA" != "$DOWNLOADED_SHA" ]; then
 
-     echo "Error! checksum mismatch."
 
-     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
 
-   if [ ! -d "$DOWNLOAD_DIR/$RELEASE_NAME" ]; then
 
-     # fallback to archive name
 
-     RELEASE_NAME="$ARCHIVE_NAME"
 
-   fi
 
-   # 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 "$@"
 
 
  |