topgrade: gate neovim tarball updater to debian family only
update-neovim.sh and the topgrade [commands] entry that calls it are only meaningful where neovim is not a distro package. On arch-family boxes the template renders empty, so chezmoi removes the script instead of deploying a no-op, and topgrade no longer runs a step that could fail on unmanaged paths.
This commit is contained in:
parent
77ae70468b
commit
bfa49d6546
2 changed files with 8 additions and 3 deletions
|
|
@ -1,68 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# update-neovim.sh — chezmoi-managed, deployed to ~/.local/bin/update-neovim.sh
|
||||
#
|
||||
# Installs or upgrades neovim from the official binary tarball.
|
||||
# Bump NVIM_TARGET_VERSION to upgrade. Topgrade calls this via
|
||||
# ~/.config/topgrade/topgrade.toml.
|
||||
#
|
||||
# Debian-only: arch gets neovim from pacman (see PACMAN_PKGS in
|
||||
# run_once_20-install-user-packages.sh.tmpl), so this is a no-op
|
||||
# on non-debian machines.
|
||||
#
|
||||
# Idempotent: no-op if installed version matches target.
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
|
||||
OS_ID="$(. /etc/os-release 2>/dev/null && echo "$ID" || true)"
|
||||
if [[ "$OS_ID" != "debian" ]]; then
|
||||
echo "neovim: not debian ($OS_ID) — no action"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
NVIM_TARGET_VERSION="v0.11.4"
|
||||
|
||||
ARCH="$(uname -m)"
|
||||
case "$ARCH" in
|
||||
x86_64)
|
||||
NVIM_TARBALL="nvim-linux64.tar.gz"
|
||||
NVIM_EXTRACT_DIR="nvim-linux64"
|
||||
;;
|
||||
aarch64|arm64)
|
||||
NVIM_TARBALL="nvim-linux-arm64.tar.gz"
|
||||
NVIM_EXTRACT_DIR="nvim-linux-arm64"
|
||||
;;
|
||||
*)
|
||||
echo "unsupported arch: $ARCH" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if command -v nvim >/dev/null 2>&1; then
|
||||
INSTALLED_VER="$(nvim --version 2>/dev/null | head -1 | awk '{print $2}')"
|
||||
if [[ "$INSTALLED_VER" == "$NVIM_TARGET_VERSION" ]]; then
|
||||
echo "neovim $INSTALLED_VER matches target — no action"
|
||||
exit 0
|
||||
fi
|
||||
echo "neovim $INSTALLED_VER -> $NVIM_TARGET_VERSION"
|
||||
else
|
||||
echo "installing neovim $NVIM_TARGET_VERSION"
|
||||
fi
|
||||
|
||||
cd /tmp
|
||||
TMP_TARBALL="$(mktemp /tmp/nvim-update.XXXXXX.tar.gz)"
|
||||
trap 'rm -f "$TMP_TARBALL"' EXIT
|
||||
|
||||
if ! curl -fL --retry 3 \
|
||||
"https://github.com/neovim/neovim/releases/download/${NVIM_TARGET_VERSION}/${NVIM_TARBALL}" \
|
||||
-o "$TMP_TARBALL"; then
|
||||
echo "failed to download $NVIM_TARBALL" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo rm -rf /opt/nvim-linux* /usr/local/bin/nvim
|
||||
sudo tar -xzf "$TMP_TARBALL" -C /opt/
|
||||
sudo ln -sf "/opt/${NVIM_EXTRACT_DIR}/bin/nvim" /usr/local/bin/nvim
|
||||
|
||||
echo "neovim $NVIM_TARGET_VERSION installed"
|
||||
nvim --version | head -1
|
||||
Loading…
Add table
Add a link
Reference in a new issue