#!/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