#!/bin/bash
source ~/.gamerc

# === 基本參數 ===
EXECUTABLE="$1"
CORE_FILE="$2"
WEBHOOK_URL="https://chat.googleapis.com/v1/spaces/AAAAhuJY4sw/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=WGx_HcQKapkR4Wf0U5cM19KoI43NwPVrPIbM8P3pPAo"
#WEBHOOK_URL="$GOOGLE_CHAT_WEBHOOK_URL" 



# === 取得目前時間（格式：YYYY-MM-DD HH:MM:SS）===
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
#HOSTNAME="$GAME_TYPE-$COUNTRY_CODE_DISPLAY:$1"
HOSTNAME=$(hostname)

# === 執行 GDB 多條指令，限制每段輸出最多 100 行 ===
BT=$(gdb "$EXECUTABLE" "$CORE_FILE" --batch -ex "bt" | head -n 100)
THREADS=$(gdb "$EXECUTABLE" "$CORE_FILE" --batch -ex "info threads" | head -n 100)

# === 偵測是否含有 SIGSEGV / SIGABRT / SIGBUS 等致命訊號 ===
if echo "$BT" | grep -qE 'SIGSEGV|SIGABRT|SIGBUS'; then
  SUMMARY="<b><font color='#ff0000'>💥Fatal signal detected (e.g. SIGSEGV)</font></b><br>"
  ICON_URL="https://www.gstatic.com/images/icons/material/system/2x/error_outline_black_48dp.png"
else
  SUMMARY="<b><font color='#00aa00'>✅No fatal signal detected</font></b><br>"
  ICON_URL="https://www.gstatic.com/images/icons/material/system/2x/check_circle_black_48dp.png"
fi

# === JSON Escape 函式（換行、引號等） ===
escape_json() {
  echo "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' | sed ':a;N;$!ba;s/\n/\\n/g'
}

BT_ESCAPED=$(escape_json "$BT")
THREADS_ESCAPED=$(escape_json "$THREADS")
ALL_BT_ESCAPED=$(escape_json "$ALL_BT")
SUMMARY_ESCAPED=$(escape_json "$SUMMARY")

# === 傳送 JSON 卡片到 Google Chat ===
cat <<EOF | curl -s -X POST "$WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d @-
{
  "cards": [
    {
      "header": {
        "title": "🔥GDB Crash Report",
        "subtitle": "$TIMESTAMP @ $HOSTNAME",
        "imageUrl":  "$ICON_URL",
        "imageStyle": "IMAGE"
      },
      "sections": [
        {
          "widgets": [
            {
              "textParagraph": {
                "text": "$SUMMARY_ESCAPED"
              }
            },
            {
              "textParagraph": {
                "text": "<b><font color='#ff0000'>Backtrace (bt)</font></b><br><pre>$BT_ESCAPED</pre>"
              }
            },
            {
              "textParagraph": {
                "text": "<b><font color='#ff0000'>Info Threads</font></b><br><pre>$THREADS_ESCAPED</pre>"
              }
            }
          ]
        }
      ]
    }
  ]
}
EOF
