#!/bin/bash

echo "Git Hook: Post Merge"

# Get merge information
CURRENT_HEAD=$(git rev-parse HEAD)
BRANCH_NAME=$(git branch --show-current)
LAST_COMMIT_MESSAGE=$(git log -1 --pretty=%B)
MERGE_AUTHOR=$(git log -1 --pretty="%an <%ae>")
REPO_NAME=$(basename "$(git rev-parse --show-toplevel)")

BRANCH_COMMIT_COUNT=$(git rev-list --count HEAD)
BRANCH_COMMIT_MESSAGES=$(git log --pretty=format:'%h%x1f%s' | jq -R -s -c 'split("\n") | map(select(length > 0)) | map(split("\u001f") | {id: .[0], message: .[1]})')
# echo "Total commits on branch '${DEFAULT_BRANCH}': ${BRANCH_COMMIT_COUNT}"

# Build JSON payload
PAYLOAD=$(jq -n \
  --arg event_type "post-merge" \
  --arg current_head "$CURRENT_HEAD" \
  --arg branch_name "$BRANCH_NAME" \
  --argjson branch_commit_count "$BRANCH_COMMIT_COUNT" \
  --argjson branch_commit_messages "$BRANCH_COMMIT_MESSAGES" \
  --arg last_commit_message "$LAST_COMMIT_MESSAGE" \
  --arg merge_author "$MERGE_AUTHOR" \
  --arg repository_name "$REPO_NAME" \
  --arg timestamp "$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
  '{
    "event_type": $event_type,
    "client_payload": {
      "current_head": $current_head,
      "branch_name": $branch_name,
      "branch_commit_count": $branch_commit_count,
      "branch_commit_messages": $branch_commit_messages,
      "last_commit_message": $last_commit_message,
      "merge_author": $merge_author,
      "repository_name": $repository_name,
      "timestamp": $timestamp
    }
  }')

# Send repository dispatch event
curl -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  -H "Authorization: token ${GITHUB_TOKEN}" \
  "https://api.github.com/repos/${GITHUB_REPOSITORY}/dispatches" \
  -d "$PAYLOAD" 2>/dev/null || echo "Failed to send repository dispatch event"