#!/bin/bash
# gxpm post-merge hook (runs after `git merge` or `git pull` completes)
set -e

if ! command -v gxpm >/dev/null 2>&1; then
  exit 0
fi

# When a feature branch merges into develop, the post-merge runs ON the
# branch that received the merge (usually develop). Use the merged branch
# name from MERGE_MSG when available.
issue_id=""
if [ -f .git/MERGE_MSG ]; then
  issue_id=$(grep -oEi '(gxg|gxpm)-[0-9]+' .git/MERGE_MSG | head -1 | tr 'a-z' 'A-Z' || true)
fi

if [ -n "$issue_id" ] && [ -f ".gxpm/issues/${issue_id}/state.json" ]; then
  gxpm gate post-merge "$issue_id" || true
  if current_sha=$(git rev-parse HEAD 2>/dev/null); then
    log_dir="${GXPM_HOME:-$HOME/.gxpm}"
    mkdir -p "$log_dir" 2>/dev/null || true
    log_file="$log_dir/post-merge-error.log"
    if ! gxpm gate post-merge-reconcile "$issue_id" --sha "$current_sha" 2>>"$log_file"; then
      printf '%s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "post-merge-reconcile failed for $issue_id $current_sha" >>"$log_file" 2>/dev/null || true
    fi
  fi
fi

exit 0
