#!/usr/bin/env bash
# Scope: universal | Orchestrates framework + stack-specific pre-commit hooks
# MORPH-SPEC Master Pre-Commit Hook
# Runs universal framework hooks + stack-specific hooks in sequence

echo "╔════════════════════════════════════════════════╗"
echo "║     MORPH-SPEC PRE-COMMIT VALIDATION           ║"
echo "╚════════════════════════════════════════════════╝"
echo ""

FRAMEWORK_HOOKS_DIR="$(dirname "$0")"
STACK_HOOKS_DIR=".morph/hooks/pre-commit"

HAS_FAILURES=false

# Run framework hooks (universal - all stacks)
echo "📦 Running framework hooks (universal)..."
for hook in "$FRAMEWORK_HOOKS_DIR"/*.sh; do
  # Skip orchestrator itself
  if [[ "$hook" == */orchestrator.sh ]]; then
    continue
  fi

  if [[ -f "$hook" ]]; then
    hook_name=$(basename "$hook")
    echo "─────────────────────────────────────────────────"
    if ! bash "$hook"; then
      HAS_FAILURES=true
      echo "❌ Framework hook failed: $hook_name"
    fi
    echo ""
  fi
done

# Run stack-specific hooks (if exist)
if [[ -d "$STACK_HOOKS_DIR" ]]; then
  echo "🎯 Running stack-specific hooks..."
  for hook in "$STACK_HOOKS_DIR"/*.sh; do
    if [[ -f "$hook" ]]; then
      hook_name=$(basename "$hook")
      echo "─────────────────────────────────────────────────"
      if ! bash "$hook"; then
        HAS_FAILURES=true
        echo "❌ Stack hook failed: $hook_name"
      fi
      echo ""
    fi
  done
else
  echo "ℹ️  No stack-specific hooks found (optional)"
  echo ""
fi

echo "═════════════════════════════════════════════════"

if [[ "$HAS_FAILURES" == "true" ]]; then
  echo "❌ PRE-COMMIT VALIDATION FAILED"
  echo "   Fix errors above before committing"
  echo "   Or use: git commit --no-verify to skip"
  exit 1
fi

echo "✅ ALL PRE-COMMIT VALIDATIONS PASSED"
exit 0
