diff options
| author | christianchiarulli <[email protected]> | 2021-08-29 14:17:32 -0400 | 
|---|---|---|
| committer | christianchiarulli <[email protected]> | 2021-08-29 14:17:32 -0400 | 
| commit | ed5559d259e38a78796a7d81421f02ba6dafac4b (patch) | |
| tree | afa9c00c017382bac547265a8a1e16b9770a07eb /utils/installer | |
| parent | e7b6d3b6f5982ea1042ffd499a7b85c18f0b782e (diff) | |
| parent | c7a5122fe2c14dba0f28f1c077f838f957884afc (diff) | |
Merge branch 'rolling' of github.com:ChristianChiarulli/LunarVim
Diffstat (limited to 'utils/installer')
| -rw-r--r-- | utils/installer/config.example-no-ts.lua | 30 | ||||
| -rw-r--r-- | utils/installer/config.example.lua | 30 | ||||
| -rwxr-xr-x | utils/installer/install-neovim-from-release | 83 | ||||
| -rwxr-xr-x | utils/installer/install.sh | 471 | ||||
| -rwxr-xr-x | utils/installer/install_stylua.sh | 76 | ||||
| -rwxr-xr-x | utils/installer/uninstall.sh | 8 | 
6 files changed, 427 insertions, 271 deletions
| diff --git a/utils/installer/config.example-no-ts.lua b/utils/installer/config.example-no-ts.lua index 4303d264..aad13fe0 100644 --- a/utils/installer/config.example-no-ts.lua +++ b/utils/installer/config.example-no-ts.lua @@ -14,8 +14,21 @@ lvim.keys.normal_mode["<C-s>"] = ":w<cr>"  -- edit a default keymapping  -- lvim.keys.normal_mode["<C-q>"] = ":q<cr>" +-- Change Telescope navigation to use j and k for navigation and n and p for history in both input and normal mode. +-- lvim.builtin.telescope.on_config_done = function() +--   local actions = require "telescope.actions" +--   -- for input mode +--   lvim.builtin.telescope.defaults.mappings.i["<C-j>"] = actions.move_selection_next +--   lvim.builtin.telescope.defaults.mappings.i["<C-k>"] = actions.move_selection_previous +--   lvim.builtin.telescope.defaults.mappings.i["<C-n>"] = actions.cycle_history_next +--   lvim.builtin.telescope.defaults.mappings.i["<C-p>"] = actions.cycle_history_prev +--   -- for normal mode +--   lvim.builtin.telescope.defaults.mappings.n["<C-j>"] = actions.move_selection_next +--   lvim.builtin.telescope.defaults.mappings.n["<C-k>"] = actions.move_selection_previous +-- end +  -- Use which-key to add extra bindings with the leader-key prefix --- lvim.builtin.which_key.mappings["P"] = { "<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects" } +-- lvim.builtin.which_key.mappings["P"] = { "<cmd>Telescope projects<CR>", "Projects" }  -- lvim.builtin.which_key.mappings["t"] = {  --   name = "+Trouble",  --   r = { "<cmd>Trouble lsp_references<cr>", "References" }, @@ -48,6 +61,21 @@ lvim.builtin.treesitter.highlight.enabled = true  --   --Enable completion triggered by <c-x><c-o>  --   buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")  -- end +-- you can overwrite the null_ls setup table (useful for setting the root_dir function) +-- lvim.lsp.null_ls.setup = { +--   root_dir = require("lspconfig").util.root_pattern("Makefile", ".git", "node_modules"), +-- } +-- or if you need something more advanced +-- lvim.lsp.null_ls.setup.root_dir = function(fname) +--   if vim.bo.filetype == "javascript" then +--     return require("lspconfig/util").root_pattern("Makefile", ".git", "node_modules")(fname) +--       or require("lspconfig/util").path.dirname(fname) +--   elseif vim.bo.filetype == "php" then +--     return require("lspconfig/util").root_pattern("Makefile", ".git", "composer.json")(fname) or vim.fn.getcwd() +--   else +--     return require("lspconfig/util").root_pattern("Makefile", ".git")(fname) or require("lspconfig/util").path.dirname(fname) +--   end +-- end  -- set a formatter if you want to override the default lsp one (if it exists)  -- lvim.lang.python.formatters = { diff --git a/utils/installer/config.example.lua b/utils/installer/config.example.lua index 0aee0275..c2c75fbb 100644 --- a/utils/installer/config.example.lua +++ b/utils/installer/config.example.lua @@ -23,8 +23,21 @@ lvim.keys.normal_mode["<C-s>"] = ":w<cr>"  -- edit a default keymapping  -- lvim.keys.normal_mode["<C-q>"] = ":q<cr>" +-- Change Telescope navigation to use j and k for navigation and n and p for history in both input and normal mode. +-- lvim.builtin.telescope.on_config_done = function() +--   local actions = require "telescope.actions" +--   -- for input mode +--   lvim.builtin.telescope.defaults.mappings.i["<C-j>"] = actions.move_selection_next +--   lvim.builtin.telescope.defaults.mappings.i["<C-k>"] = actions.move_selection_previous +--   lvim.builtin.telescope.defaults.mappings.i["<C-n>"] = actions.cycle_history_next +--   lvim.builtin.telescope.defaults.mappings.i["<C-p>"] = actions.cycle_history_prev +--   -- for normal mode +--   lvim.builtin.telescope.defaults.mappings.n["<C-j>"] = actions.move_selection_next +--   lvim.builtin.telescope.defaults.mappings.n["<C-k>"] = actions.move_selection_previous +-- end +  -- Use which-key to add extra bindings with the leader-key prefix --- lvim.builtin.which_key.mappings["P"] = { "<cmd>lua require'telescope'.extensions.project.project{}<CR>", "Projects" } +-- lvim.builtin.which_key.mappings["P"] = { "<cmd>Telescope projects<CR>", "Projects" }  -- lvim.builtin.which_key.mappings["t"] = {  --   name = "+Trouble",  --   r = { "<cmd>Trouble lsp_references<cr>", "References" }, @@ -57,6 +70,21 @@ lvim.builtin.treesitter.highlight.enabled = true  --   --Enable completion triggered by <c-x><c-o>  --   buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")  -- end +-- you can overwrite the null_ls setup table (useful for setting the root_dir function) +-- lvim.lsp.null_ls.setup = { +--   root_dir = require("lspconfig").util.root_pattern("Makefile", ".git", "node_modules"), +-- } +-- or if you need something more advanced +-- lvim.lsp.null_ls.setup.root_dir = function(fname) +--   if vim.bo.filetype == "javascript" then +--     return require("lspconfig/util").root_pattern("Makefile", ".git", "node_modules")(fname) +--       or require("lspconfig/util").path.dirname(fname) +--   elseif vim.bo.filetype == "php" then +--     return require("lspconfig/util").root_pattern("Makefile", ".git", "composer.json")(fname) or vim.fn.getcwd() +--   else +--     return require("lspconfig/util").root_pattern("Makefile", ".git")(fname) or require("lspconfig/util").path.dirname(fname) +--   end +-- end  -- set a formatter if you want to override the default lsp one (if it exists)  -- lvim.lang.python.formatters = { diff --git a/utils/installer/install-neovim-from-release b/utils/installer/install-neovim-from-release new file mode 100755 index 00000000..a2ba0513 --- /dev/null +++ b/utils/installer/install-neovim-from-release @@ -0,0 +1,83 @@ +#!/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 "$@" diff --git a/utils/installer/install.sh b/utils/installer/install.sh index 25b67f12..9e198274 100755 --- a/utils/installer/install.sh +++ b/utils/installer/install.sh @@ -1,272 +1,289 @@ -#!/bin/sh -#Set Variable to master is not set differently -LVBRANCH="${LVBRANCH:-master}" -USER_BIN_DIR="/usr/local/bin" -set -o nounset # error when referencing undefined variable -set -o errexit # exit when command fails - -installnodemac() { -	brew install lua -	brew install node -	brew install yarn -} +#!/usr/bin/env bash +set -eo pipefail -installnodeubuntu() { -	sudo apt install nodejs -	sudo apt install npm -} +#Set branch to master unless specified by the user +declare -r LV_BRANCH="${LV_BRANCH:-rolling}" +declare -r LV_REMOTE="${LV_REMOTE:-lunarvim/lunarvim.git}" +declare -r INSTALL_PREFIX="${INSTALL_PREFIX:-"$HOME/.local"}" + +declare -r XDG_DATA_HOME="${XDG_DATA_HOME:-"$HOME/.local/share"}" +declare -r XDG_CACHE_HOME="${XDG_CACHE_HOME:-"$HOME/.cache"}" +declare -r XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"$HOME/.config"}" -installnodetermux() { -	apt install nodejs -} +# TODO: Use a dedicated cache directory #1256 +declare -r NEOVIM_CACHE_DIR="$XDG_CACHE_HOME/nvim" -moveoldlvim() { -	echo "Not installing LunarVim" -	echo "Please move your ~/.local/share/lunarvim folder before installing" -	exit -} +declare -r LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"$XDG_DATA_HOME/lunarvim"}" +declare -r LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$XDG_CONFIG_HOME/lvim"}" -installnodearch() { -	sudo pacman -S nodejs -	sudo pacman -S npm -} +declare -a __lvim_dirs=( +  "$LUNARVIM_CONFIG_DIR" +  "$LUNARVIM_RUNTIME_DIR" +  "$NEOVIM_CACHE_DIR" # for now this is shared with neovim +) + +declare -a __npm_deps=( +  "neovim" +  "tree-sitter-cli" +) + +declare -a __pip_deps=( +  "pynvim" +) + +function main() { +  cat <<'EOF' + +      88\                                                   88\                +      88 |                                                  \__|               +      88 |88\   88\ 888888$\   888888\   888888\ 88\    88\ 88\ 888888\8888\   +      88 |88 |  88 |88  __88\  \____88\ 88  __88\\88\  88  |88 |88  _88  _88\  +      88 |88 |  88 |88 |  88 | 888888$ |88 |  \__|\88\88  / 88 |88 / 88 / 88 | +      88 |88 |  88 |88 |  88 |88  __88 |88 |       \88$  /  88 |88 | 88 | 88 | +      88 |\888888  |88 |  88 |\888888$ |88 |        \$  /   88 |88 | 88 | 88 | +      \__| \______/ \__|  \__| \_______|\__|         \_/    \__|\__| \__| \__| + +EOF + +  __add_separator "80" + +  echo "Detecting platform for managing any additional neovim dependencies" +  detect_platform + +  if [ -n "$GITHUB_ACTIONS" ]; then +    install_packer +    setup_lvim +    exit 0 +  fi + +  check_system_deps + +  __add_separator "80" + +  echo "Would you like to check lunarvim's NodeJS dependencies?" +  read -p "[y]es or [n]o (default: no) : " -r answer +  [ "$answer" != "${answer#[Yy]}" ] && install_nodejs_deps + +  echo "Would you like to check lunarvim's Python dependencies?" +  read -p "[y]es or [n]o (default: no) : " -r answer +  [ "$answer" != "${answer#[Yy]}" ] && install_python_deps + +  echo "Would you like to check lunarvim's Rust dependencies?" +  read -p "[y]es or [n]o (default: no) : " -r answer +  [ "$answer" != "${answer#[Yy]}" ] && install_rust_deps + +  __add_separator "80" + +  echo "Backing up old LunarVim configuration" +  backup_old_config + +  __add_separator "80" + +  case "$@" in +    *--overwrite*) +      echo "!!Warning!! -> Removing all lunarvim related config \ +        because of the --overwrite flag" +      read -p "Would you like to continue? [y]es or [n]o : " -r answer +      [ "$answer" == "${answer#[Yy]}" ] && exit 1 +      for dir in "${__lvim_dirs[@]}"; do +        [ -d "$dir" ] && rm -rf "$dir" +      done +      ;; +  esac + +  if [ -e "$LUNARVIM_RUNTIME_DIR/site/pack/packer/start/packer.nvim" ]; then +    echo "Packer already installed" +  else +    install_packer +  fi + +  __add_separator "80" + +  if [ -e "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" ]; then +    echo "Updating LunarVim" +    update_lvim +  else +    clone_lvim +    setup_lvim +  fi + +  __add_separator "80" -installnodefedora() { -	sudo dnf install -y nodejs -	sudo dnf install -y npm  } -installnodegentoo() { -	echo "Printing current node status..." -	emerge -pqv net-libs/nodejs -	echo "Make sure the npm USE flag is enabled for net-libs/nodejs" -	echo "If it isn't enabled, would you like to enable it with flaggie? (Y/N)" -	read -r answer -	[ "$answer" != "${answer#[Yy]}" ] && sudo flaggie net-libs/nodejs +npm -	sudo emerge -avnN net-libs/nodejs +function detect_platform() { +  OS="$(uname -s)" +  case "$OS" in +    Linux) +      if [ -f "/etc/arch-release" ] || [ -f "/etc/artix-release" ]; then +        RECOMMEND_INSTALL="sudo pacman -S" +      elif [ -f "/etc/fedora-release" ] || [ -f "/etc/redhat-release" ]; then +        RECOMMEND_INSTALL="sudo dnf install -y" +      elif [ -f "/etc/gentoo-release" ]; then +        RECOMMEND_INSTALL="emerge install -y" +      else # assume debian based +        RECOMMEND_INSTALL="sudo apt install -y" +      fi +      ;; +    Darwin) +      RECOMMEND_INSTALL="brew install" +      ;; +    *) +      echo "OS $OS is not currently supported." +      exit 1 +      ;; +  esac  } -installnode() { -	echo "Installing node..." -	[ "$(uname)" = "Darwin" ] && installnodemac -	grep -q Ubuntu /etc/os-release && installnodeubuntu -	[ -f "/etc/arch-release" ] && installnodearch -	[ -f "/etc/artix-release" ] && installnodearch -	[ -f "/etc/fedora-release" ] && installnodefedora -	[ -f "/etc/gentoo-release" ] && installnodegentoo -	[ -d "/data/data/com.termux" ] && installnodetermux -	[ "$(uname -s | cut -c 1-10)" = "MINGW64_NT" ] && echo "Windows not currently supported" -	sudo npm i -g neovim +function print_missing_dep_msg() { +  echo "[ERROR]: Unable to find dependency [$1]" +  echo "Please install it first and re-run the installer. Try: $RECOMMEND_INSTALL $1"  } -installpiponmac() { -	sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py -	python3 get-pip.py -	rm get-pip.py +function check_dep() { +  if ! command -v "$1" &>/dev/null; then +    print_missing_dep_msg "$1" +    exit 1 +  fi  } -installpiponubuntu() { -	sudo apt install python3-pip >/dev/null +function check_system_deps() { +  if ! command -v git &>/dev/null; then +    print_missing_dep_msg "git" +    exit 1 +  fi +  if ! command -v nvim &>/dev/null; then +    print_missing_dep_msg "neovim" +    exit 1 +  fi  } -installpipontermux() { -	apt install python +function install_nodejs_deps() { +  check_dep "npm" +  echo "Installing node modules with npm.." +  for dep in "${__npm_deps[@]}"; do +    if ! npm ls -g "$dep" &>/dev/null; then +      printf "installing %s .." "$dep" +      npm install -g "$dep" +    fi +  done +  echo "All NodeJS dependencies are succesfully installed"  } -installpiponarch() { -	sudo pacman -S python-pip +function install_python_deps() { +  echo "Verifying that pip is available.." +  if ! python3 -m ensurepip &>/dev/null; then +    if ! python3 -m pip --version &>/dev/null; then +      print_missing_dep_msg "pip" +      exit 1 +    fi +  fi +  echo "Installing with pip.." +  for dep in "${__pip_deps[@]}"; do +    python3 -m pip install --user "$dep" +  done +  echo "All Python dependencies are succesfully installed"  } -installpiponfedora() { -	sudo dnf install -y pip >/dev/null +function __attempt_to_install_with_cargo() { +  if ! command -v cargo &>/dev/null; then +    echo "Installing missing Rust dependency with cargo" +    cargo install "$1" +  else +    echo "[WARN]: Unable to find fd. Make sure to install it to avoid any problems" +  fi  } -installpipongentoo() { -	sudo emerge -avn dev-python/pip +# we try to install the missing one with cargo even though it's unlikely to be found +function install_rust_deps() { +  if ! command -v fd &>/dev/null; then +    __attempt_to_install_with_cargo "fd-find" +  fi +  if ! command -v rg &>/dev/null; then +    __attempt_to_install_with_cargo "ripgrep" +  fi +  echo "All Rust dependencies are succesfully installed"  } -installpip() { -	echo "Installing pip..." -	[ "$(uname)" = "Darwin" ] && installpiponmac -	grep -q Ubuntu /etc/os-release && installpiponubuntu -	[ -f "/etc/arch-release" ] && installpiponarch -	[ -f "/etc/fedora-release" ] && installpiponfedora -	[ -f "/etc/gentoo-release" ] && installpipongentoo -	[ -d "/data/data/com.termux" ] && installpipontermux -	[ "$(uname -s | cut -c 1-10)" = "MINGW64_NT" ] && echo "Windows not currently supported" +function backup_old_config() { +  for dir in "${__lvim_dirs[@]}"; do +    # we create an empty folder for subsequent commands \ +    # that require an existing directory +    mkdir -p "$dir" "$dir.bak" +    if command -v rsync &>/dev/null; then +      rsync --archive -hh --partial --progress --cvs-exclude \ +        --modify-window=1 "$dir"/ "$dir.bak" +    else +      cp -R "$dir/*" "$dir.bak/." +    fi +  done +  echo "Backup operation complete"  } -installpynvim() { -	echo "Installing pynvim..." -	if [ -f "/etc/gentoo-release" ]; then -		echo "Installing using Portage" -		sudo emerge -avn dev-python/pynvim -	else -		pip3 install pynvim --user -	fi +function install_packer() { +  git clone --depth 1 https://github.com/wbthomason/packer.nvim \ +    "$LUNARVIM_RUNTIME_DIR/site/pack/packer/start/packer.nvim"  } -installpacker() { -	git clone https://github.com/wbthomason/packer.nvim ~/.local/share/lunarvim/site/pack/packer/start/packer.nvim +function clone_lvim() { +  echo "Cloning LunarVim configuration" +  if ! git clone --branch "$LV_BRANCH" \ +    --depth 1 "https://github.com/${LV_REMOTE}" "$LUNARVIM_RUNTIME_DIR/lvim"; then +    echo "Failed to clone repository. Installation failed." +    exit 1 +  fi  } -cloneconfig() { -	if [ -d "/data/data/com.termux" ]; then -		sudo() { -			eval "$@" -		} -		USER_BIN_DIR="$HOME/../usr/bin" -	fi -	echo "Cloning LunarVim configuration" -	mkdir -p ~/.local/share/lunarvim -	case "$@" in - -	*--testing*) -		cp -r "$(pwd)" ~/.local/share/lunarvim/lvim -		;; -	*) -		git clone --branch "$LVBRANCH" https://github.com/lunarvim/lunarvim.git ~/.local/share/lunarvim/lvim -		;; -	esac -	mkdir -p "$HOME/.config/lvim" -	sudo cp "$HOME/.local/share/lunarvim/lvim/utils/bin/lvim" "$USER_BIN_DIR" -	sudo chmod a+rx "$USER_BIN_DIR"/lvim -	cp "$HOME/.local/share/lunarvim/lvim/utils/installer/config.example-no-ts.lua" "$HOME/.config/lvim/config.lua" - -	nvim -u ~/.local/share/lunarvim/lvim/init.lua --cmd "set runtimepath+=~/.local/share/lunarvim/lvim" --headless \ -		+'autocmd User PackerComplete sleep 100m | qall' \ -		+PackerInstall - -	nvim -u ~/.local/share/lunarvim/lvim/init.lua --cmd "set runtimepath+=~/.local/share/lunarvim/lvim" --headless \ -		+'autocmd User PackerComplete sleep 100m | qall' \ -		+PackerSync - -	printf "\nCompile Complete\n" - -	if [ -e "$HOME/.local/share/lunarvim/lvim/init.lua" ]; then -		echo 'config.lua already present' -	else -		cp "$HOME/.local/share/lunarvim/lvim/utils/installer/config.example.lua" "$HOME/.config/lvim/config.lua" -	fi +function setup_shim() { +  if [ ! -d "$INSTALL_PREFIX/bin" ]; then +    mkdir -p "$INSTALL_PREFIX/bin" +  fi +  cat >"$INSTALL_PREFIX/bin/lvim" <<EOF +#!/bin/sh -} +export LUNARVIM_CONFIG_DIR="\${LUNARVIM_CONFIG_DIR:-$LUNARVIM_CONFIG_DIR}" +export LUNARVIM_RUNTIME_DIR="\${LUNARVIM_RUNTIME_DIR:-$LUNARVIM_RUNTIME_DIR}" -asktoinstallnode() { -	echo "node not found" -	printf "Would you like to install node now (y/n)? " -	read -r answer -	[ "$answer" != "${answer#[Yy]}" ] && installnode +exec nvim -u "\$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "\$@" +EOF +  chmod +x "$INSTALL_PREFIX/bin/lvim"  } -asktoinstallgit() { -	echo "git not found, please install git" -	exit -} +function setup_lvim() { +  echo "Installing LunarVim shim" -asktoinstallpip() { -	# echo "pip not found" -	# echo -n "Would you like to install pip now (y/n)? " -	# read answer -	# [ "$answer" != "${answer#[Yy]}" ] && installpip -	echo "Please install pip3 before continuing with install" -	exit -} +  setup_shim -installonmac() { -	brew install ripgrep fzf -	npm install -g tree-sitter-cli -} +  echo "Preparing Packer setup" -installonubuntu() { -	sudo apt install ripgrep fzf -	sudo apt install libjpeg8-dev zlib1g-dev python-dev python3-dev libxtst-dev -	pip3 install neovim-remote -	npm install -g tree-sitter-cli -} +  cp "$LUNARVIM_RUNTIME_DIR/lvim/utils/installer/config.example-no-ts.lua" \ +    "$LUNARVIM_CONFIG_DIR/config.lua" -installtermux() { -	apt install ripgrep fzf -	pip install neovim-remote -	npm install -g tree-sitter-cli -} +  nvim -u "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" --headless \ +    -c 'autocmd User PackerComplete quitall' \ +    -c 'PackerSync' -installonarch() { -	sudo pacman -S ripgrep fzf -	pip3 install neovim-remote -	npm install -g tree-sitter-cli -} +  echo "Packer setup complete" + +  cp "$LUNARVIM_RUNTIME_DIR/lvim/utils/installer/config.example.lua" "$LUNARVIM_CONFIG_DIR/config.lua" -installonfedora() { -	sudo dnf groupinstall "X Software Development" -	sudo dnf install -y fzf ripgrep +  echo "Thank you for installing LunarVim!!" +  echo "You can start it by running: $INSTALL_PREFIX/bin/lvim" +  echo "Do not forget to use a font with glyphs (icons) support [https://github.com/ryanoasis/nerd-fonts]"  } -installongentoo() { -	sudo emerge -avn sys-apps/ripgrep app-shells/fzf dev-python/neovim-remote virtual/jpeg sys-libs/zlib -	npm install -g tree-sitter-cli +function update_lvim() { +  git -C "$LUNARVIM_RUNTIME_DIR/lvim" fetch --quiet +  if ! git -C "$LUNARVIM_RUNTIME_DIR/lvim" diff --quiet "@{upstream}"; then +    git -C "$LUNARVIM_RUNTIME_DIR/lvim" merge --ff-only --progress || +      echo "Unable to guarantee data integrity while updating. Please do that manually instead." && exit 1 +  fi +  echo "Your LunarVim installation is now up to date!"  } -installextrapackages() { -	[ "$(uname)" = "Darwin" ] && installonmac -	grep -q Ubuntu /etc/os-release && installonubuntu -	[ -f "/etc/arch-release" ] && installonarch -	[ -f "/etc/artix-release" ] && installonarch -	[ -f "/etc/fedora-release" ] && installonfedora -	[ -f "/etc/gentoo-release" ] && installongentoo -	[ -d "/data/data/com.termux" ] && installtermux -	[ "$(uname -s | cut -c 1-10)" = "MINGW64_NT" ] && echo "Windows not currently supported" +function __add_separator() { +  local DIV_WIDTH="$1" +  printf "%${DIV_WIDTH}s\n" ' ' | tr ' ' -  } -# Welcome -echo 'Installing LunarVim' - -case "$@" in -*--overwrite*) -	echo '!!Warning!! -> Removing all lunarvim related config because of the --overwrite flag' -	rm -rf "$HOME/.local/share/lunarvim" -	rm -rf "$HOME/.cache/nvim" -	rm -rf "$HOME/.config/lvim" -	;; -esac - -# move old lvim directory if it exists -[ -d "$HOME/.local/share/lunarvim" ] && moveoldlvim - -# install node and neovim support -(command -v git >/dev/null && echo "git installed, moving on...") || asktoinstallgit - -# install pip -(command -v pip3 >/dev/null && echo "pip installed, moving on...") || asktoinstallpip - -# install node and neovim support -(command -v node >/dev/null && echo "node installed, moving on...") || asktoinstallnode - -# install pynvim -(pip3 list | grep pynvim >/dev/null && echo "pynvim installed, moving on...") || installpynvim - -if [ -e "$HOME/.local/share/lunarvim/site/pack/packer/start/packer.nvim" ]; then -	echo 'packer already installed' -else -	installpacker -fi - -if [ -e "$HOME/.local/share/lunarvim/lvim/init.lua" ]; then -	echo 'LunarVim already installed' -else -	# clone config down -	cloneconfig "$@" -	# echo 'export PATH=$HOME/.config/nvim/utils/bin:$PATH' >>~/.zshrc -	# echo 'export PATH=$HOME/.config/lunarvim/utils/bin:$PATH' >>~/.bashrc -fi - -if [ "$(uname)" != "Darwin" ]; then -	if [ -e "$HOME/.local/share/applications/lvim.desktop" ]; then -		echo 'Desktop file already available' -	else -		mkdir -p "$HOME/.local/share/applications" -		cp "$HOME/.local/share/lunarvim/lvim/utils/desktop/lvim.desktop" "$HOME/.local/share/applications/lvim.desktop" -	fi -fi - -echo "I recommend you also install and activate a font from here: https://github.com/ryanoasis/nerd-fonts" -# echo 'export PATH=/home/$USER/.config/lunarvim/utils/bin:$PATH appending to zshrc/bashrc' +main "$@" diff --git a/utils/installer/install_stylua.sh b/utils/installer/install_stylua.sh index 2a33de7e..963416ea 100755 --- a/utils/installer/install_stylua.sh +++ b/utils/installer/install_stylua.sh @@ -11,53 +11,53 @@ declare -r FILENAME="stylua-$RELEASE-$OS"  declare -a __deps=("curl" "unzip")  function check_deps() { -	for dep in "${__deps[@]}"; do -		if ! command -v "$dep" >/dev/null; then -			echo "Missing depdendecy!" -			echo "The \"$dep\" command was not found!. Please install and try again." -		fi -	done +  for dep in "${__deps[@]}"; do +    if ! command -v "$dep" >/dev/null; then +      echo "Missing depdendecy!" +      echo "The \"$dep\" command was not found!. Please install and try again." +    fi +  done  }  function download_stylua() { -	local DOWNLOAD_DIR -	local URL="https://github.com/JohnnyMorganz/StyLua/releases/download/v$RELEASE/$FILENAME.zip" - -	DOWNLOAD_DIR="$(mktemp -d)" -	echo "Initiating download for Stylua v$RELEASE" -	if ! curl --progress-bar --fail -L "$URL" -o "$DOWNLOAD_DIR/$FILENAME.zip"; then -		echo "Download failed.  Check that the release/filename are correct." -		exit 1 -	fi - -	echo "Installation in progress.." -	unzip -q "$DOWNLOAD_DIR/$FILENAME.zip" -d "$DOWNLOAD_DIR" - -	if [ -f "$DOWNLOAD_DIR/stylua" ]; then -		mv "$DOWNLOAD_DIR/stylua" "$INSTALL_DIR/stylua" -	else -		mv "$DOWNLOAD_DIR/$FILENAME/stylua" "$INSTALL_DIR/." -	fi - -	chmod u+x "$INSTALL_DIR/stylua" +  local DOWNLOAD_DIR +  local URL="https://github.com/JohnnyMorganz/StyLua/releases/download/v$RELEASE/$FILENAME.zip" + +  DOWNLOAD_DIR="$(mktemp -d)" +  echo "Initiating download for Stylua v$RELEASE" +  if ! curl --progress-bar --fail -L "$URL" -o "$DOWNLOAD_DIR/$FILENAME.zip"; then +    echo "Download failed.  Check that the release/filename are correct." +    exit 1 +  fi + +  echo "Installation in progress.." +  unzip -q "$DOWNLOAD_DIR/$FILENAME.zip" -d "$DOWNLOAD_DIR" + +  if [ -f "$DOWNLOAD_DIR/stylua" ]; then +    mv "$DOWNLOAD_DIR/stylua" "$INSTALL_DIR/stylua" +  else +    mv "$DOWNLOAD_DIR/$FILENAME/stylua" "$INSTALL_DIR/." +  fi + +  chmod u+x "$INSTALL_DIR/stylua"  }  function verify_install() { -	echo "Verifying installation.." -	local DOWNLOADED_VER -	DOWNLOADED_VER="$("$INSTALL_DIR/stylua" -V | awk '{ print $2 }')" -	if [ "$DOWNLOADED_VER" != "$RELEASE" ]; then -		echo "Mismatched version!" -		echo "Expected: v$RELEASE but got v$DOWNLOADED_VER" -		exit 1 -	fi -	echo "Verification complete!" +  echo "Verifying installation.." +  local DOWNLOADED_VER +  DOWNLOADED_VER="$("$INSTALL_DIR/stylua" -V | awk '{ print $2 }')" +  if [ "$DOWNLOADED_VER" != "$RELEASE" ]; then +    echo "Mismatched version!" +    echo "Expected: v$RELEASE but got v$DOWNLOADED_VER" +    exit 1 +  fi +  echo "Verification complete!"  }  function main() { -	check_deps -	download_stylua -	verify_install +  check_deps +  download_stylua +  verify_install  }  main "$@" diff --git a/utils/installer/uninstall.sh b/utils/installer/uninstall.sh index b9a27252..8d9d039a 100755 --- a/utils/installer/uninstall.sh +++ b/utils/installer/uninstall.sh @@ -1,10 +1,10 @@  #!/bin/sh  USER_BIN_DIR="/usr/local/bin"  if [ -d "/data/data/com.termux" ]; then -	sudo() { -		eval "$@" -	} -	USER_BIN_DIR="$HOME/../usr/bin" +  sudo() { +    eval "$@" +  } +  USER_BIN_DIR="$HOME/../usr/bin"  fi  rm -rf ~/.local/share/lunarvim  sudo rm "$USER_BIN_DIR"/lvim | 
