#!/bin/bash

# ==========================================
# 設定エリア (自分の環境に合わせて書き換えてください)
# ==========================================

# プラグインのスラッグ (フォルダ名)
PLUGIN_SLUG="pixalia-image-assistant"

# ローカルにあるSVNリポジトリのパス (絶対パス推奨)
# 例: /Users/username/Projects/svn-pixalia
SVN_PATH="/Users/ogiwaratoshiyuki/Projects/svn-pixalia"

# メインのPHPファイル名
MAIN_PHP_FILE="${PLUGIN_SLUG}.php"

# ==========================================
# 処理開始
# ==========================================

# 1. バージョン番号の自動取得 (PHPファイルから)
if [ ! -f "$MAIN_PHP_FILE" ]; then
    echo "❌ Error: $MAIN_PHP_FILE が見つかりません。"
    exit 1
fi
VERSION=$(grep "Version:" "$MAIN_PHP_FILE" | awk '{print $3}' | tr -d '\r')
echo "🚀 Deploying Version: $VERSION"

# 2. 確認プロンプト
read -p "このバージョンでSVNへのデプロイを開始しますか？ (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "キャンセルしました。"
    exit 1
fi

# 3. ビルド & ZIP作成
echo "📦 Building project..."
npm run build
composer install --no-dev
# 既存のZIP生成スクリプトを実行
if [ -f "./zip_create.sh" ]; then
    ./zip_create.sh
else
    echo "❌ Error: zip_create.sh が見つかりません。"
    exit 1
fi

# ZIPが存在するか確認
ZIP_FILE="${PLUGIN_SLUG}.zip"
if [ ! -f "$ZIP_FILE" ]; then
    echo "❌ Error: ZIPファイルの生成に失敗しました。"
    exit 1
fi

# 4. 一時フォルダへの解凍 & SVN trunk への同期
echo "🔄 Syncing to SVN trunk..."
TEMP_DIR="/tmp/svn_deploy_${PLUGIN_SLUG}"
rm -rf "$TEMP_DIR"
unzip -q "$ZIP_FILE" -d "$TEMP_DIR"

# rsyncで同期 (SVN側の .svn フォルダを除外しつつ、削除ファイルも反映)
rsync -rc --delete --exclude='.svn' "$TEMP_DIR/${PLUGIN_SLUG}/" "${SVN_PATH}/trunk/"

# 5. SVNの追加・削除を反映 (svn add / svn rm)
cd "${SVN_PATH}/trunk" || exit

# 削除されたファイルをSVNに通知
svn st | grep '^!' | awk '{print $2}' | xargs -I {} svn rm {}
# 追加されたファイルをSVNに通知
svn st | grep '^?' | awk '{print $2}' | xargs -I {} svn add {}

# 6. Trunkのコミット
echo "⬆️ Committing trunk..."
cd "${SVN_PATH}" || exit
svn ci -m "Update trunk to version $VERSION" --username pixalia

# 7. タグの作成 (trunk -> tags/VERSION)
TAG_DIR="${SVN_PATH}/tags/${VERSION}"

if [ -d "$TAG_DIR" ]; then
    echo "⚠️ Tag $VERSION already exists. Skipping tag creation."
else
    echo "🏷 Creating tag $VERSION..."
    svn cp trunk "tags/${VERSION}"
    svn ci -m "Tag release $VERSION" --username pixalia
fi

# 8. お掃除
echo "🧹 Cleaning up..."
rm -rf "$TEMP_DIR"
# 必要ならZIPも消す
# rm "$ZIP_FILE"

echo "✅ Deployment Complete! Version $VERSION is live."