#!/bin/bash

# --- 脚本说明 ---
# 功能: 使用 rsync 将指定格式的文件夹从源目录同步到目标目录。
#      - 脚本可以从任何位置安全执行。
#      - 在同步前会检查源文件/目录是否存在，如果不存在则跳过该任务。
#
# rsync 参数说明:
#   -a: 归档模式，保留文件属性。
#   -v: 详细模式。
#   -h: 人性化显示大小。
#   --progress: 显示传输进度。
#   --stats: 显示任务统计。

# --- 路径配置 ---
# 获取脚本文件所在的绝对目录路径，确保路径的准确性。
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

# 基于脚本所在目录设置源和目标的绝对路径
SOURCE_DIR="$SCRIPT_DIR/../../DataSet_Public_outputs"
DEST_DIR="$SCRIPT_DIR/../../Hardisk"

# --- 主程序 ---
echo "脚本执行目录已锁定为: $SCRIPT_DIR"
echo "解析后的源目录 (Source): $SOURCE_DIR"
echo "解析后的目标根目录 (Destination): $DEST_DIR"
echo "========================================"
echo "开始执行 rsync 同步任务（带安全检查）..."
echo ""

# --- 任务处理函数 (简化代码) ---
# 定义一个函数来处理每个同步任务，避免代码重复
# 参数1: 任务名称 (例如: 1_cholecseg8k)
# 参数2: 源文件/目录的通配符模式
# 参数3: 目标目录
handle_sync_task() {
    local task_name="$1"
    local src_pattern="$2"
    local dest_dir="$3"
    
    echo "--> 正在检查任务: $task_name"
    
    # 将通配符匹配到的文件存入数组
    local sources=($src_pattern)

    # 检查数组的第一个元素是否存在。如果通配符没有匹配到任何文件，
    # bash会把通配符本身作为字符串返回，而这个字符串命名的文件通常不存在。
    if [ -e "${sources[0]}" ]; then
        echo "    源文件已找到，准备同步..."
        echo "    目标目录: $dest_dir"
        
        # 创建目标目录（如果不存在）
        mkdir -p "$dest_dir"
        
        # 执行 rsync
        rsync -avh --progress --stats "${sources[@]}" "$dest_dir/"
        echo "--> 任务 '$task_name' 同步完成。"
    else
        echo "    警告: 源路径 '$src_pattern' 未匹配到任何文件，已跳过此任务。"
    fi
    echo "----------------------------------------"
}


# --- 任务列表 ---

# 任务1: 同步 1_cholecseg8k
handle_sync_task \
    "1_cholecseg8k" \
    "$SOURCE_DIR/1_cholecseg8k-Class_13-Alg*" \
    "$DEST_DIR/1_CholecSeg8k-13Type-1920x1080_outputs-MMSeg"

# 任务2: 同步 2_autolaparo
handle_sync_task \
    "2_autolaparo" \
    "$SOURCE_DIR/2_autolaparo-Class_10-Alg*" \
    "$DEST_DIR/2_AutoLaparo-10Type-1920x1080_outputs-MMSeg"

# 任务3: 同步 3_1_endovis_2017
handle_sync_task \
    "3_1_endovis_2017" \
    "$SOURCE_DIR/3_1_endovis_2017-Class_8-Alg*" \
    "$DEST_DIR/3_1_Endovis_2017-8Type-512x512_outputs-MMSeg"

# 任务4: 同步 3_2_endovis_2018
handle_sync_task \
    "3_2_endovis_2018" \
    "$SOURCE_DIR/3_2_endovis_2018-Class_8-Alg*" \
    "$DEST_DIR/3_2_Endovis_2018-8Type-512x512_outputs-MMSeg"

# 任务5: 同步 4_dresden
handle_sync_task \
    "4_dresden" \
    "$SOURCE_DIR/4_dresden-Class_11-Alg*" \
    "$DEST_DIR/4_Dresden-11Type-512x512_outputs-MMSeg"


echo "========================================"
echo "所有 rsync 同步任务已执行完毕！"