#!/usr/bin/env bash
# dump_segment.sh — 一键封装 kafka-dump-log.sh
#
# 用法：
#   bash dump_segment.sh <segment文件路径>
#
# 自动检测文件后缀，分别解码 .log / .index / .timeindex / .snapshot：
#   - .log       : --print-data-log + --deep-iteration（含 batch + record 详情 + CRC 校验）
#   - .index     : 列出 (offset, position) 稀疏索引项
#   - .timeindex : 列出 (timestamp, offset) 时间索引项
#   - .snapshot  : 列出 ProducerId / Epoch / 序列号快照
#
# 示例：
#   bash dump_segment.sh /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.log
#   bash dump_segment.sh /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.index
#   bash dump_segment.sh /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.timeindex

set -euo pipefail

if [ $# -lt 1 ]; then
  echo "用法: $0 <segment文件>"
  echo
  echo "示例:"
  echo "  $0 /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.log"
  echo "  $0 /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.index"
  echo "  $0 /var/lib/kafka/data/learn.07.storage-0/00000000000000000000.timeindex"
  exit 1
fi

FILE="$1"

if [ ! -f "$FILE" ]; then
  echo "❌ 文件不存在: $FILE" >&2
  exit 1
fi

# 检查 kafka-dump-log.sh 是否在 PATH
if ! command -v kafka-dump-log.sh >/dev/null 2>&1; then
  echo "❌ 找不到 kafka-dump-log.sh，请确认 Kafka bin 目录已加入 PATH" >&2
  echo "   常见位置: /opt/kafka/bin/kafka-dump-log.sh" >&2
  exit 1
fi

EXT="${FILE##*.}"

echo "=============================================================="
echo " kafka-dump-log.sh 解码工具"
echo "   文件: $FILE"
echo "   类型: .$EXT"
echo "   大小: $(ls -lh "$FILE" | awk '{print $5}')"
echo "=============================================================="
echo

case "$EXT" in
  log)
    echo "[模式] .log 数据文件"
    echo "[选项] --print-data-log --deep-iteration（解码每条 record + 校验 CRC）"
    echo
    kafka-dump-log.sh \
      --files "$FILE" \
      --print-data-log \
      --deep-iteration
    ;;

  index)
    echo "[模式] .index 偏移量稀疏索引"
    echo "[说明] 每行：offset → file position（默认每 4KB 一项）"
    echo
    kafka-dump-log.sh --files "$FILE"
    ;;

  timeindex)
    echo "[模式] .timeindex 时间稀疏索引"
    echo "[说明] 每行：timestamp → offset"
    echo
    kafka-dump-log.sh --files "$FILE"
    ;;

  snapshot)
    echo "[模式] .snapshot 幂等/事务 Producer 状态快照"
    echo "[说明] ProducerId / Epoch / 序列号 / 事务状态"
    echo
    kafka-dump-log.sh --files "$FILE"
    ;;

  *)
    echo "⚠️  未知后缀 .$EXT，将以默认方式 dump"
    echo
    kafka-dump-log.sh --files "$FILE"
    ;;
esac

echo
echo "=============================================================="
echo " 完成。"
echo "=============================================================="
