#!/bin/bash # # Install Git hooks for MEV Bot V2 # set -e # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}📦 Installing Git hooks for MEV Bot V2...${NC}" echo "" # Get script directory SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" REPO_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )" HOOKS_DIR="$REPO_ROOT/.git-hooks" GIT_HOOKS_DIR="$REPO_ROOT/.git/hooks" # Check if we're in a git repository if [ ! -d "$REPO_ROOT/.git" ]; then echo -e "${RED}❌ Not a git repository${NC}" echo -e "${RED} Run this script from within the repository${NC}" exit 1 fi # Check if hooks directory exists if [ ! -d "$HOOKS_DIR" ]; then echo -e "${RED}❌ Hooks directory not found: $HOOKS_DIR${NC}" exit 1 fi # Make hooks executable echo -e "${YELLOW}Making hooks executable...${NC}" chmod +x "$HOOKS_DIR"/pre-commit chmod +x "$HOOKS_DIR"/commit-msg echo -e "${GREEN}✅ Hooks made executable${NC}" echo "" # Install pre-commit hook echo -e "${YELLOW}Installing pre-commit hook...${NC}" if [ -f "$GIT_HOOKS_DIR/pre-commit" ] && [ ! -L "$GIT_HOOKS_DIR/pre-commit" ]; then echo -e "${YELLOW}⚠️ Existing pre-commit hook found (not a symlink)${NC}" echo -e "${YELLOW} Backing up to pre-commit.backup${NC}" mv "$GIT_HOOKS_DIR/pre-commit" "$GIT_HOOKS_DIR/pre-commit.backup" fi ln -sf "../../.git-hooks/pre-commit" "$GIT_HOOKS_DIR/pre-commit" echo -e "${GREEN}✅ pre-commit hook installed${NC}" echo "" # Install commit-msg hook echo -e "${YELLOW}Installing commit-msg hook...${NC}" if [ -f "$GIT_HOOKS_DIR/commit-msg" ] && [ ! -L "$GIT_HOOKS_DIR/commit-msg" ]; then echo -e "${YELLOW}⚠️ Existing commit-msg hook found (not a symlink)${NC}" echo -e "${YELLOW} Backing up to commit-msg.backup${NC}" mv "$GIT_HOOKS_DIR/commit-msg" "$GIT_HOOKS_DIR/commit-msg.backup" fi ln -sf "../../.git-hooks/commit-msg" "$GIT_HOOKS_DIR/commit-msg" echo -e "${GREEN}✅ commit-msg hook installed${NC}" echo "" # Verify installation echo -e "${YELLOW}Verifying installation...${NC}" if [ ! -L "$GIT_HOOKS_DIR/pre-commit" ]; then echo -e "${RED}❌ pre-commit hook installation failed${NC}" exit 1 fi if [ ! -L "$GIT_HOOKS_DIR/commit-msg" ]; then echo -e "${RED}❌ commit-msg hook installation failed${NC}" exit 1 fi echo -e "${GREEN}✅ Installation verified${NC}" echo "" # Summary echo -e "${GREEN}╔══════════════════════════════════════╗${NC}" echo -e "${GREEN}║ ✅ GIT HOOKS INSTALLED ✅ ║${NC}" echo -e "${GREEN}╚══════════════════════════════════════╝${NC}" echo "" echo -e "${GREEN}Installed hooks:${NC}" echo -e " • pre-commit - Runs quality checks before commits" echo -e " • commit-msg - Validates commit message format" echo "" echo -e "${YELLOW}To test the hooks:${NC}" echo -e " git commit --allow-empty -m \"test(hooks): verify git hooks installation\"" echo "" echo -e "${YELLOW}To bypass hooks (emergency only):${NC}" echo -e " git commit --no-verify" echo "" echo -e "${GREEN}Happy coding! 🚀${NC}"