#!/bin/sh

# DanceLessonsCoach pre-commit hook
# Runs go mod tidy and go fmt before allowing commits

echo "Running pre-commit hooks..."

# Check if we're in a Go project
if [ ! -f "go.mod" ]; then
    echo "Not a Go project, skipping hooks"
    exit 0
fi

# Run go mod tidy
echo "Running go mod tidy..."
go mod tidy
if [ $? -ne 0 ]; then
    echo "ERROR: go mod tidy failed"
    exit 1
fi

# Check if go.mod or go.sum were modified
if git diff --cached --name-only | grep -qE '(go\.mod|go\.sum)'; then
    echo "go.mod or go.sum changed, adding to commit..."
    git add go.mod go.sum
fi

# Run go fmt on all Go files
echo "Running go fmt..."
GOFILES=$(find . -name '*.go' -not -path "./vendor/*" -not -path "./.git/*")
if [ -n "$GOFILES" ]; then
    gofmt -w $GOFILES
    if [ $? -ne 0 ]; then
        echo "ERROR: go fmt failed"
        exit 1
    fi
    
    # Add formatted files to commit
    git add $GOFILES
fi

echo "Pre-commit hooks completed successfully"
exit 0