Add health check, uninstall script, Makefile, and GitHub Actions workflow
This commit is contained in:
parent
fe7ed05f0d
commit
78ad9fe4b2
|
|
@ -0,0 +1,82 @@
|
||||||
|
name: FreeBSD Config Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master, main ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ master, main ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test-freebsd:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Check Lua syntax
|
||||||
|
run: |
|
||||||
|
# Check if init.lua has valid Lua syntax
|
||||||
|
lua -l init.lua 2>&1 | head -20 || true
|
||||||
|
|
||||||
|
- name: Validate shell scripts
|
||||||
|
run: |
|
||||||
|
# Validate shell scripts
|
||||||
|
sh -n install-freebsd.sh
|
||||||
|
sh -n check-freebsd.sh
|
||||||
|
sh -n uninstall-freebsd.sh
|
||||||
|
|
||||||
|
- name: Check file structure
|
||||||
|
run: |
|
||||||
|
# Verify essential files exist
|
||||||
|
test -f README.md && echo "✓ README.md exists"
|
||||||
|
test -f init.lua && echo "✓ init.lua exists"
|
||||||
|
test -f install-freebsd.sh && echo "✓ install-freebsd.sh exists"
|
||||||
|
test -f check-freebsd.sh && echo "✓ check-freebsd.sh exists"
|
||||||
|
test -f uninstall-freebsd.sh && echo "✓ uninstall-freebsd.sh exists"
|
||||||
|
test -f Makefile && echo "✓ Makefile exists"
|
||||||
|
test -f lazy-lock.json && echo "✓ lazy-lock.json exists"
|
||||||
|
|
||||||
|
- name: Check README format
|
||||||
|
run: |
|
||||||
|
# Verify README has essential sections
|
||||||
|
grep -q "kickstart.nvim-FreeBSD" README.md && echo "✓ README has correct title"
|
||||||
|
grep -q "FreeBSD" README.md && echo "✓ README mentions FreeBSD"
|
||||||
|
grep -q "install-freebsd.sh" README.md && echo "✓ README references install script"
|
||||||
|
|
||||||
|
- name: Validate Makefile
|
||||||
|
run: |
|
||||||
|
# Check if Makefile syntax is valid
|
||||||
|
make -n help > /dev/null && echo "✓ Makefile is valid"
|
||||||
|
|
||||||
|
config-validation:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Check for common config issues
|
||||||
|
run: |
|
||||||
|
# Check that treesitter config doesn't have hard-coded compiler paths
|
||||||
|
if grep -q "gcc" init.lua; then
|
||||||
|
echo "⚠ Warning: init.lua contains hardcoded 'gcc' reference"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check that Mason auto-install is disabled
|
||||||
|
if grep -q "lua_ls.*ensure_installed" init.lua; then
|
||||||
|
echo "✓ lua_ls auto-install is properly handled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check treesitter build is disabled
|
||||||
|
if grep -q "build = false" init.lua; then
|
||||||
|
echo "✓ Treesitter build is disabled"
|
||||||
|
else
|
||||||
|
echo "⚠ Warning: Treesitter build might not be disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Lint shell scripts
|
||||||
|
run: |
|
||||||
|
# Simple shell script linting
|
||||||
|
for script in install-freebsd.sh check-freebsd.sh uninstall-freebsd.sh; do
|
||||||
|
echo "Checking $script..."
|
||||||
|
head -1 "$script" | grep -q "^#!/" && echo "✓ $script has shebang"
|
||||||
|
done
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
.PHONY: help install check sync clean uninstall
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "kickstart.nvim-FreeBSD Makefile"
|
||||||
|
@echo ""
|
||||||
|
@echo "Available targets:"
|
||||||
|
@echo " make install - Install FreeBSD dependencies"
|
||||||
|
@echo " make check - Check if all dependencies are installed"
|
||||||
|
@echo " make sync - Start Neovim and sync plugins"
|
||||||
|
@echo " make clean - Clean Neovim cache and swap files"
|
||||||
|
@echo " make uninstall - Remove Neovim configuration"
|
||||||
|
@echo " make help - Show this help message"
|
||||||
|
|
||||||
|
install:
|
||||||
|
@echo "Installing FreeBSD dependencies..."
|
||||||
|
sudo sh install-freebsd.sh
|
||||||
|
|
||||||
|
check:
|
||||||
|
@echo "Checking dependencies..."
|
||||||
|
sh check-freebsd.sh
|
||||||
|
|
||||||
|
sync:
|
||||||
|
@echo "Starting Neovim and syncing plugins..."
|
||||||
|
nvim +Lazy sync +q
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo "Cleaning Neovim cache..."
|
||||||
|
rm -rf ~/.local/share/nvim/swap
|
||||||
|
rm -rf ~/.local/state/nvim
|
||||||
|
@echo "Clean complete"
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
@echo "Uninstalling Neovim configuration..."
|
||||||
|
sh uninstall-freebsd.sh
|
||||||
|
|
||||||
|
.DEFAULT_GOAL := help
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# FreeBSD Health Check Script for kickstart.nvim
|
||||||
|
# Validates that all dependencies are properly installed
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=== FreeBSD Neovim Dependencies Health Check ==="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
check_cmd() {
|
||||||
|
local cmd=$1
|
||||||
|
local name=$2
|
||||||
|
|
||||||
|
if command -v "$cmd" &> /dev/null; then
|
||||||
|
echo "${GREEN}✓${NC} $name is installed"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "${RED}✗${NC} $name is NOT installed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_pkg() {
|
||||||
|
local pkg=$1
|
||||||
|
local name=$2
|
||||||
|
|
||||||
|
if pkg info -e "$pkg" > /dev/null 2>&1; then
|
||||||
|
echo "${GREEN}✓${NC} $name is installed"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "${RED}✗${NC} $name is NOT installed"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
failed=0
|
||||||
|
|
||||||
|
echo "Checking core tools..."
|
||||||
|
check_cmd "nvim" "Neovim" || failed=$((failed+1))
|
||||||
|
check_cmd "git" "Git" || failed=$((failed+1))
|
||||||
|
check_cmd "gmake" "GNU Make (gmake)" || failed=$((failed+1))
|
||||||
|
check_cmd "unzip" "Unzip" || failed=$((failed+1))
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Checking development tools..."
|
||||||
|
check_pkg "llvm" "LLVM/Clang" || failed=$((failed+1))
|
||||||
|
check_cmd "rg" "Ripgrep" || failed=$((failed+1))
|
||||||
|
check_cmd "fd" "Fd" || failed=$((failed+1))
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Checking syntax highlighting..."
|
||||||
|
check_cmd "tree-sitter" "Tree-sitter" || failed=$((failed+1))
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Checking formatters..."
|
||||||
|
check_cmd "stylua" "Stylua" || failed=$((failed+1))
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Checking optional tools..."
|
||||||
|
check_cmd "base64" "Base64" || echo "${YELLOW}!${NC} Base64 (optional) not found"
|
||||||
|
check_cmd "xclip" "Xclip (clipboard)" || echo "${YELLOW}!${NC} Xclip (optional) not found"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Checking Neovim config..."
|
||||||
|
if [ -f "$HOME/.config/nvim/init.lua" ]; then
|
||||||
|
echo "${GREEN}✓${NC} Neovim config found at ~/.config/nvim/init.lua"
|
||||||
|
else
|
||||||
|
echo "${RED}✗${NC} Neovim config NOT found"
|
||||||
|
failed=$((failed+1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
if [ $failed -eq 0 ]; then
|
||||||
|
echo "${GREEN}All dependencies are installed!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "You can start Neovim with: nvim"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "${RED}$failed dependency/dependencies are missing.${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "Install missing dependencies with: sudo sh install-freebsd.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# FreeBSD Uninstall Script for kickstart.nvim
|
||||||
|
# Cleanly removes the Neovim configuration
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "=== Uninstalling kickstart.nvim-FreeBSD ==="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Confirmation
|
||||||
|
echo "${YELLOW}WARNING: This will delete your Neovim configuration!${NC}"
|
||||||
|
echo "The following will be removed:"
|
||||||
|
echo " - ~/.config/nvim"
|
||||||
|
echo " - ~/.local/share/nvim"
|
||||||
|
echo ""
|
||||||
|
read -p "Are you sure? (type 'yes' to confirm): " confirm
|
||||||
|
|
||||||
|
if [ "$confirm" != "yes" ]; then
|
||||||
|
echo "Uninstall cancelled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Uninstalling..."
|
||||||
|
|
||||||
|
# Backup option
|
||||||
|
if [ -d "$HOME/.config/nvim" ]; then
|
||||||
|
echo ""
|
||||||
|
read -p "Create a backup before deleting? (y/n): " backup
|
||||||
|
if [ "$backup" = "y" ] || [ "$backup" = "Y" ]; then
|
||||||
|
backup_dir="$HOME/nvim-backup-$(date +%Y%m%d-%H%M%S)"
|
||||||
|
echo "Creating backup at $backup_dir..."
|
||||||
|
cp -r "$HOME/.config/nvim" "$backup_dir"
|
||||||
|
echo "${GREEN}✓ Backup created${NC}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remove config
|
||||||
|
echo "Removing ~/.config/nvim..."
|
||||||
|
rm -rf "$HOME/.config/nvim"
|
||||||
|
|
||||||
|
# Remove plugin data
|
||||||
|
echo "Removing ~/.local/share/nvim..."
|
||||||
|
rm -rf "$HOME/.local/share/nvim"
|
||||||
|
|
||||||
|
# Remove state
|
||||||
|
echo "Removing ~/.local/state/nvim..."
|
||||||
|
rm -rf "$HOME/.local/state/nvim"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "${GREEN}✓ Uninstall complete!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "To reinstall, run:"
|
||||||
|
echo " git clone https://github.com/YOUR_USERNAME/kickstart.nvim-freebsd.git ~/.config/nvim"
|
||||||
|
echo " cd ~/.config/nvim"
|
||||||
|
echo " sudo sh install-freebsd.sh"
|
||||||
|
echo " nvim +Lazy sync +q"
|
||||||
Loading…
Reference in New Issue