Browse Source

refactor: use a static lvim binary template (#1444)

kylo252 3 năm trước cách đây
mục cha
commit
21b41688ee

+ 8 - 4
Makefile

@@ -1,15 +1,19 @@
 SHELL := /bin/bash
 SHELL := /bin/bash
 
 
 install:
 install:
-	@echo Starting LunarVim Installer
+	@echo starting LunarVim installer
 	bash ./utils/installer/install.sh
 	bash ./utils/installer/install.sh
 
 
+install-bin:
+	@echo starting LunarVim bin-installer
+	bash ./utils/installer/install_bin.sh
+
 install-neovim-binary:
 install-neovim-binary:
-	@echo Installing Neovim from github releases
+	@echo installing Neovim from github releases
 	bash ./utils/installer/install-neovim-from-release
 	bash ./utils/installer/install-neovim-from-release
 
 
 uninstall:
 uninstall:
-	@echo Starting LunarVim Uninstaller
+	@echo starting LunarVim uninstaller
 	bash ./utils/installer/uninstall.sh
 	bash ./utils/installer/uninstall.sh
 
 
 generate_plugins_sha:
 generate_plugins_sha:
@@ -30,7 +34,7 @@ style-lua:
 	stylua --config-path .stylua.toml --check .
 	stylua --config-path .stylua.toml --check .
 
 
 style-sh:
 style-sh:
-	shfmt -f . | grep -v jdtls | xargs shfmt -i 2 -ci -l -d
+	shfmt -f . | grep -v jdtls | xargs shfmt -i 2 -ci -bn -l -d
 
 
 test:
 test:
 	bash ./utils/bin/test_runner.sh "$(TEST)"
 	bash ./utils/bin/test_runner.sh "$(TEST)"

+ 0 - 6
utils/bin/lvim

@@ -1,6 +0,0 @@
-#!/bin/sh
-
-export LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-$HOME/.local/share/lunarvim}"
-export LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-$HOME/.config/lvim}"
-
-exec nvim -u "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "$@"

+ 7 - 0
utils/bin/lvim.template

@@ -0,0 +1,7 @@
+#!/bin/sh
+
+export LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-RUNTIME_DIR_VAR}"
+export LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-CONFIG_DIR_VAR}"
+export LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-CACHE_DIR_VAR}"
+
+exec nvim -u "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "$@"

+ 1 - 12
utils/installer/install.sh

@@ -352,18 +352,7 @@ function link_local_lvim() {
 }
 }
 
 
 function setup_shim() {
 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}"
-
-exec nvim -u "\$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "\$@"
-EOF
-  chmod +x "$INSTALL_PREFIX/bin/lvim"
+  make -C "$LUNARVIM_BASE_DIR" install-bin
 }
 }
 
 
 function remove_old_cache_files() {
 function remove_old_cache_files() {

+ 25 - 21
utils/installer/install_bin.sh

@@ -1,33 +1,37 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
 set -eo pipefail
 set -eo pipefail
 
 
-declare -r INSTALL_PREFIX="${INSTALL_PREFIX:-"$HOME/.local"}"
+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"}"
+XDG_DATA_HOME="${XDG_DATA_HOME:-"$HOME/.local/share"}"
+XDG_CACHE_HOME="${XDG_CACHE_HOME:-"$HOME/.cache"}"
+XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-"$HOME/.config"}"
 
 
-declare -r LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"$XDG_DATA_HOME/lunarvim"}"
-declare -r LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$XDG_CONFIG_HOME/lvim"}"
+LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"$XDG_DATA_HOME/lunarvim"}"
+LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$XDG_CONFIG_HOME/lvim"}"
+LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-"$XDG_CACHE_HOME/nvim"}"
 
 
-# TODO: Use a dedicated cache directory #1256
-declare -r LUNARVIM_CACHE_DIR="$XDG_CACHE_HOME/nvim"
+LUNARVIM_BASE_DIR="${LUNARVIM_BASE_DIR:-"$LUNARVIM_RUNTIME_DIR/lvim"}"
 
 
 function setup_shim() {
 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}"
-export LUNARVIM_CACHE_DIR="\${LUNARVIM_CACHE_DIR:-$LUNARVIM_CACHE_DIR}"
-
-exec nvim -u "\$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "\$@"
-EOF
-  chmod +x "$INSTALL_PREFIX/bin/lvim"
+  local src="$LUNARVIM_BASE_DIR/utils/bin/lvim.template"
+  local dst="$INSTALL_PREFIX/bin/lvim"
+
+  [ ! -d "$INSTALL_PREFIX/bin" ] && mkdir -p "$INSTALL_PREFIX/bin"
+
+  # remove outdated installation so that `cp` doesn't complain
+  rm -f "$dst"
+
+  cp "$src" "$dst"
+
+  sed -e s"@RUNTIME_DIR_VAR@\"${LUNARVIM_RUNTIME_DIR}\"@"g \
+    -e s"@CONFIG_DIR_VAR@\"${LUNARVIM_CONFIG_DIR}\"@"g \
+    -e s"@CACHE_DIR_VAR@\"${LUNARVIM_CACHE_DIR}\"@"g "$src" \
+    | tee "$dst" >/dev/null
+
+  chmod u+x "$dst"
 }
 }
 
 
 setup_shim "$@"
 setup_shim "$@"
+
 echo "You can start LunarVim by running: $INSTALL_PREFIX/bin/lvim"
 echo "You can start LunarVim by running: $INSTALL_PREFIX/bin/lvim"