#!/bin/bash

i=1
printf "%-4s %-30s %-10s\n" "序号" "目录名" "所在卷"
printf "%-4s %-30s %-10s\n" "----" "------------------------------" "----------"

# 临时保存所有路径的数组
declare -a paths

for path in /volume*/@appstore/*; do
    dir_name=$(basename "$path")
    vol_name=$(echo "$path" | awk -F'/' '{print $2}')
    printf "%-4d %-30s %-10s\n" "$i" "$dir_name" "$vol_name"
    paths[$i]="$path"
    i=$((i+1))
done

echo
read -p "请输入要移动套件的序号: " sel

# 校验输入是否有效
if [[ ! "$sel" =~ ^[0-9]+$ ]] || [ -z "${paths[$sel]}" ]; then
    echo "❌ 无效的序号，请重新运行脚本。"
    exit 1
fi

# 提取目录名与卷名
appname=$(basename "${paths[$sel]}")
vol_from=$(echo "${paths[$sel]}" | awk -F'/' '{print $2}')

echo "✅ 已选择:"
echo "要移动的套件：$appname"
echo "所在卷：$vol_from"

echo
read -p "请输入目标卷号（例如输入 2 表示 volume2）: " vol_num

# 校验卷号输入
if [[ ! "$vol_num" =~ ^[0-9]+$ ]]; then
    echo "❌ 无效的卷号，请输入数字。"
    exit 1
fi

vol_to="volume${vol_num}"

echo
echo "✅ 准备移动到:"
echo "$vol_to"

echo
read -p "确认执行 Y/y: " confirm

if [[ "$confirm" == "Y" || "$confirm" == "y" ]]; then
    echo "✅ 已确认，继续执行..."
    # 在这里写你要执行的命令
else
    echo "❌ 操作已取消。"
    exit 1
fi

mkdir -p /$vol_to/@appstore /$vol_to/@appshare /$vol_to/@apphome /$vol_to/@appdata /$vol_to/@appconf

# 停止套件
synopkg stop $appname

# 移动目录
mv /$vol_from/@appstore/$appname /$vol_to/@appstore/
mv /$vol_from/@appshare/$appname /$vol_to/@appshare/
mv /$vol_from/@apphome/$appname /$vol_to/@apphome/
mv /$vol_from/@appdata/$appname /$vol_to/@appdata/
mv /$vol_from/@appconf/$appname /$vol_to/@appconf/
mv /$vol_from/@apptemp/$appname /$vol_to/@apptemp/

# 删除指向旧应用程序路径的过时符号链接
rm -fv /var/packages/$appname/target
rm -fv /var/packages/$appname/var
rm -fv /var/packages/$appname/tmp
rm -fv /var/packages/$appname/share
rm -fv /var/packages/$appname/home
rm -fv /var/packages/$appname/etc

# 创建指向新的、正确的应用程序路径的新 Sim 链接。
ln -s /$vol_to/@appstore/$appname /var/packages/$appname/target
ln -s /$vol_to/@appdata/$appname /var/packages/$appname/var
ln -s /$vol_to/@apptemp/$appname /var/packages/$appname/tmp
ln -s /$vol_to/@appshare/$appname /var/packages/$appname/share
ln -s /$vol_to/@apphome/$appname /var/packages/$appname/home
ln -s /$vol_to/@appconf/$appname /var/packages/$appname/etc

# 启动套件
# 获取套件状态
status=$(synopkg status "$appname" | jq -r '.status' 2>/dev/null)
if [ "$status" = "stop" ]; then
    echo "正在启动 [$appname] ..."
    synopkg start $appname
fi

echo "已经把套件 $appname 从 $vol_from 移动到 $vol_to "