#!/bin/bash
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# staged 파일 확인
STAGED_FILES=$(git diff --cached --name-only)

if [ -z "$STAGED_FILES" ]; then
    echo "❌ staged 파일이 없습니다."
    echo "git add 명령으로 먼저 파일을 stage에 추가해주세요."
    exit 1
fi

# staged 파일 목록 표시
echo "=========================================="
echo "Staged 파일 목록:"
echo "=========================================="
echo "$STAGED_FILES"
echo "=========================================="
echo ""

echo "커밋 메세지를 작성중..."

# staged 변경사항 가져오기
STAGED_DIFF=$(git diff --staged)

# 프롬프트와 staged diff를 결합하여 claude에 전달
PROMPT=$(cat "$SCRIPT_DIR/ptyGitCommit.prompt")
FULL_PROMPT="$PROMPT

다음은 staged 파일의 변경사항입니다:

\`\`\`
$STAGED_DIFF
\`\`\`"

# claude 출력을 변수에 저장
COMMIT_MSG=$(echo "$FULL_PROMPT" | claude)

if [ -z "$COMMIT_MSG" ]; then
    echo "커밋 메세지 생성 실패"
    exit 1
fi

# 커밋 메세지 표시
echo ""
echo "=========================================="
echo "커밋 메세지:"
echo "=========================================="
echo "$COMMIT_MSG"
echo "=========================================="
echo ""

# 확인
read -p "이 메세지로 커밋하시겠습니까? (y/n): " confirm
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
    git commit -m "$COMMIT_MSG"
    echo "✅ 커밋 완료!"
else
    echo "❌ 커밋 취소됨"
fi
