install_nvchad: pull instead of re-clone if already installed, deploy lua modules after clone
This commit is contained in:
parent
b6c48db105
commit
75466aa599
@ -1,30 +1,29 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
REPO="git@gitea.hptrow.me:pt/nvchad.git"
|
||||||
|
BRANCH="customize"
|
||||||
|
NVIM_CONFIG="$HOME/.config/nvim"
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
|
||||||
|
deploy_nvim_modules() {
|
||||||
|
local src_dir="$SCRIPT_DIR/dotfiles/nvim"
|
||||||
|
[[ -d "$src_dir" ]] || return 0
|
||||||
|
[[ -d "$NVIM_CONFIG/lua" ]] || return 0
|
||||||
|
echo "Deploying nvim lua modules..."
|
||||||
|
for mod in "$src_dir"/*.lua; do
|
||||||
|
[[ -f "$mod" ]] || continue
|
||||||
|
local target="$NVIM_CONFIG/lua/$(basename "$mod")"
|
||||||
|
[[ -e "$target" ]] && mv "$target" "${target}.backup"
|
||||||
|
ln -s "$mod" "$target"
|
||||||
|
echo " linked: $(basename "$mod")"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo "NvChad Configuration Installation Script"
|
echo "NvChad Configuration Installation Script"
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo ""
|
echo ""
|
||||||
echo "This script will:"
|
|
||||||
echo " - Backup existing ~/.config/nvim to ~/.config/nvim.backup (if exists)"
|
|
||||||
echo " - Clone your NvChad config from git@gitea.hptrow.me:pt/nvchad.git (customize branch)"
|
|
||||||
echo " - Launch nvim to auto-install lazy.nvim and all plugins"
|
|
||||||
echo ""
|
|
||||||
echo "Prerequisites:"
|
|
||||||
echo " - Neovim 0.9.5+ must be installed (run ./install_neovim.sh if needed)"
|
|
||||||
echo " - Git must be installed"
|
|
||||||
echo " - SSH key must be set up for gitea.hptrow.me"
|
|
||||||
echo ""
|
|
||||||
read -p "Continue with installation? (y/N) " -n 1 -r
|
|
||||||
echo
|
|
||||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
echo "Installation cancelled."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Starting installation..."
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Check prerequisites
|
# Check prerequisites
|
||||||
if ! command -v nvim &> /dev/null; then
|
if ! command -v nvim &> /dev/null; then
|
||||||
@ -49,28 +48,59 @@ fi
|
|||||||
echo "Neovim version: $(nvim --version | head -n1)"
|
echo "Neovim version: $(nvim --version | head -n1)"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Backup existing config if it exists
|
# If already installed and pointing at the right remote, just pull
|
||||||
if [ -d ~/.config/nvim ]; then
|
if [ -d "$NVIM_CONFIG/.git" ]; then
|
||||||
echo "Backing up existing ~/.config/nvim to ~/.config/nvim.backup"
|
EXISTING_REMOTE=$(git -C "$NVIM_CONFIG" remote get-url hptrow 2>/dev/null || git -C "$NVIM_CONFIG" remote get-url origin 2>/dev/null || echo "")
|
||||||
if [ -d ~/.config/nvim.backup ]; then
|
if [ "$EXISTING_REMOTE" = "$REPO" ]; then
|
||||||
rm -rf ~/.config/nvim.backup
|
echo "NvChad config already installed — pulling latest..."
|
||||||
|
git -C "$NVIM_CONFIG" pull hptrow "$BRANCH"
|
||||||
|
deploy_nvim_modules
|
||||||
|
echo "Done."
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
mv ~/.config/nvim ~/.config/nvim.backup
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clone the config
|
echo "This script will:"
|
||||||
echo "Cloning NvChad config from gitea (customize branch)..."
|
echo " - Backup existing ~/.config/nvim to ~/.config/nvim.backup (if exists)"
|
||||||
set -x
|
echo " - Clone your NvChad config from $REPO ($BRANCH branch)"
|
||||||
git clone -b customize git@gitea.hptrow.me:pt/nvchad.git ~/.config/nvim
|
echo " - Deploy lua modules from dotfiles/nvim/"
|
||||||
set +x
|
echo " - Launch nvim to auto-install lazy.nvim and all plugins"
|
||||||
|
echo ""
|
||||||
if [ ! -d ~/.config/nvim ]; then
|
echo "Prerequisites:"
|
||||||
echo "Error: Failed to clone config" >&2
|
echo " - SSH key must be set up for gitea.hptrow.me"
|
||||||
exit 1
|
echo ""
|
||||||
|
read -p "Continue with installation? (y/N) " -n 1 -r
|
||||||
|
echo
|
||||||
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
echo "Installation cancelled."
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Starting installation..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Backup existing config
|
||||||
|
if [ -d "$NVIM_CONFIG" ]; then
|
||||||
|
echo "Backing up existing ~/.config/nvim to ~/.config/nvim.backup"
|
||||||
|
[ -d "$NVIM_CONFIG.backup" ] && rm -rf "$NVIM_CONFIG.backup"
|
||||||
|
mv "$NVIM_CONFIG" "$NVIM_CONFIG.backup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clone the config
|
||||||
|
echo "Cloning NvChad config from gitea ($BRANCH branch)..."
|
||||||
|
set -x
|
||||||
|
git clone -b "$BRANCH" "$REPO" "$NVIM_CONFIG"
|
||||||
|
set +x
|
||||||
|
|
||||||
|
[ -d "$NVIM_CONFIG" ] || { echo "Error: Failed to clone config" >&2; exit 1; }
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Config cloned successfully!"
|
echo "Config cloned successfully!"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
deploy_nvim_modules
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo "First Launch Setup"
|
echo "First Launch Setup"
|
||||||
@ -87,7 +117,6 @@ echo ""
|
|||||||
read -p "Press Enter to launch nvim and complete setup..." -r
|
read -p "Press Enter to launch nvim and complete setup..." -r
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Launch nvim to trigger plugin installation
|
|
||||||
nvim +q
|
nvim +q
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
@ -95,7 +124,7 @@ echo "============================================"
|
|||||||
echo "Installation Complete!"
|
echo "Installation Complete!"
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Your NvChad configuration is installed at: ~/.config/nvim"
|
echo "Your NvChad configuration is installed at: $NVIM_CONFIG"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Key customizations in this config:"
|
echo "Key customizations in this config:"
|
||||||
echo " - Theme: vscode_dark"
|
echo " - Theme: vscode_dark"
|
||||||
@ -107,7 +136,5 @@ echo " - Custom keybindings: g+w (format), <leader>gb (blame), more in lua/mapp
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Next time you launch nvim, everything will be ready!"
|
echo "Next time you launch nvim, everything will be ready!"
|
||||||
echo ""
|
echo ""
|
||||||
if [ -d ~/.config/nvim.backup ]; then
|
[ -d "$NVIM_CONFIG.backup" ] && echo "Note: Your old config was backed up to $NVIM_CONFIG.backup"
|
||||||
echo "Note: Your old config was backed up to ~/.config/nvim.backup"
|
|
||||||
fi
|
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user