summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rwxr-xr-xutils/bin/install-latest-neovim9
-rw-r--r--[-rwxr-xr-x]utils/bin/lvim5
-rw-r--r--utils/installer/config.example-no-ts.lua30
-rw-r--r--utils/installer/config.example.lua30
-rwxr-xr-xutils/installer/install-neovim-from-release83
-rwxr-xr-xutils/installer/install.sh471
-rwxr-xr-xutils/installer/install_stylua.sh76
-rwxr-xr-xutils/installer/uninstall.sh8
8 files changed, 431 insertions, 281 deletions
diff --git a/utils/bin/install-latest-neovim b/utils/bin/install-latest-neovim
deleted file mode 100755
index 8d1d95fd..00000000
--- a/utils/bin/install-latest-neovim
+++ /dev/null
@@ -1,9 +0,0 @@
-!#/bin/bash
-cd ~
-sudo rm -r neovim
-git clone --branch master --depth 1 https://github.com/neovim/neovim
-cd neovim
-sudo make CMAKE_BUILD_TYPE=Release install
-cd ~
-sudo rm -r neovim
-
diff --git a/utils/bin/lvim b/utils/bin/lvim
index b94d544f..2303be3c 100755..100644
--- a/utils/bin/lvim
+++ b/utils/bin/lvim
@@ -1,3 +1,6 @@
#!/bin/sh
-exec nvim -u ~/.local/share/lunarvim/lvim/init.lua --cmd "set runtimepath+=~/.local/share/lunarvim/lvim" "$@"
+export LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-$HOME/.local/share/lunarvim}"
+export LUNARVIM_CONFIG_DIR="${LUNARVIM_RUNTIME_DIR:-$HOME/.config/lvim}"
+
+exec nvim -u "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "$@"
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