Spaces:
Running on Zero
Running on Zero
| # | |
| # Pre-commit hook for llama-ui | |
| # Runs: format (staged files only) + type-check | |
| # Stashes unstaged changes temporarily and restores them after. | |
| # Only run when there are staged changes in tools/ui/ | |
| if ! git diff --cached --name-only | grep -q "^tools/ui/"; then | |
| exit 0 | |
| fi | |
| REPO_ROOT=$(git rev-parse --show-toplevel) | |
| cd "$REPO_ROOT/tools/ui" | |
| # Check that node_modules exists | |
| if [ ! -d "node_modules" ]; then | |
| echo "❌ node_modules not found. Run 'npm install' first." | |
| exit 1 | |
| fi | |
| # Stash unstaged changes in tools/ui/ so they don't interfere | |
| stash_name="pi-ui-precommit" | |
| git stash push --keep-index -u -m "$stash_name" -- tools/ui/ 2>/dev/null || true | |
| echo "Running pre-commit checks for llama-ui..." | |
| # Format only staged files | |
| staged_ui=$(git diff --cached --name-only -- tools/ui/) | |
| if [ -n "$staged_ui" ]; then | |
| echo "$staged_ui" | xargs npm run format | |
| format_ok=$? | |
| # Re-stage formatted files | |
| git add tools/ui/ | |
| else | |
| format_ok=0 | |
| fi | |
| # Type-check the clean tree | |
| npm run check | |
| check_ok=$? | |
| # Restore stashed changes | |
| if git stash list | grep -q "$stash_name"; then | |
| git stash pop 2>/dev/null || true | |
| fi | |
| if [ $format_ok -ne 0 ]; then | |
| echo "❌ Format failed" | |
| exit 1 | |
| fi | |
| if [ $check_ok -ne 0 ]; then | |
| echo "❌ Type check failed" | |
| exit 1 | |
| fi | |
| echo "✅ Pre-commit checks passed" | |
| exit 0 | |