#!/bin/bash

# =================================================================
# Git 同步與 MR 歷史歸檔工具
# 功能：同步 master、歸檔描述檔、更新 PHP 依賴、清理已合併分支
# =================================================================

# 1. 強制同步遠端 master
echo "--- [1/5] 正在切換並同步 master ---"
git checkout master
git pull origin master

# 2. 取得變數：日期與最新的 Commit ID
DATE=$(date +%Y%m%d)
LAST_COMMIT_ID=$(git rev-parse --short HEAD)

# 3. 處理 MR 描述檔歸檔
SOURCE_FILE="MR_DESCRIPTION.md"
TARGET_DIR="mr_history"
TARGET_FILE="${TARGET_DIR}/${DATE}_MR_DESCRIPTION_${LAST_COMMIT_ID}.md"

echo "--- [2/5] 處理 MR 描述歸檔 ---"
if [ -f "$SOURCE_FILE" ]; then
    # 建立目錄 (若不存在)
    mkdir -p "$TARGET_DIR"
    
    # 搬移檔案
    mv "$SOURCE_FILE" "$TARGET_FILE"
    echo "已搬移: $SOURCE_FILE -> $TARGET_FILE"

    # 自動推送到遠端 master 存檔
    git add "$TARGET_DIR"
    git commit -m "docs: archive MR description for ${LAST_COMMIT_ID} ($DATE)"
    git push origin master
    echo "歸檔已成功推送到 GitLab 遠端。"
else
    echo "提示：找不到 $SOURCE_FILE，跳過歸檔。"
fi

# 4. PHP 專案特定處理
echo "--- [3/5] 檢查 PHP 依賴 ---"
#if [ -f "composer.json" ]; then
#    echo "偵測到 composer.json，執行更新..."
#    composer install
#else
#    echo "非 PHP 專案或找不到 composer.json，跳過。"
#fi

# 5. 清理本地端已合併的廢棄分支
echo "--- [4/5] 清理已失效遠端追蹤 ---"
git fetch -p

echo "--- [5/5] 檢查已合併的本地分支 ---"
# 排除 master, develop 以及當前分支
merged_branches=$(git branch --merged master | grep -v '^*' | grep -v 'master' | grep -v 'develop')

if [ -z "$merged_branches" ]; then
    echo "恭喜！沒有發現多餘的廢棄分支。"
else
    echo "發現以下已合併至 master 的分支："
    echo "$merged_branches"
    read -p "確定要刪除這些本地分支嗎？(y/n) " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        echo "$merged_branches" | xargs git branch -d
        echo "本地分支清理完畢。"
    else
        echo "已取消刪除。"
    fi
fi

echo "========================================="
echo "   所有流程已完成！Master 已是最新狀態。   "
echo "========================================="
