Files
qiming/qiming-xagi-frontend-templates/scripts/upload-templates.sh
2026-06-01 13:43:09 +08:00

105 lines
2.9 KiB
Bash

#!/bin/bash
# 模板上传脚本
# 用途: 自动上传 react-vite 和 vue3-vite 模板到远程服务器
set -e
# 脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
# 加载环境变量
if [ -f "$PROJECT_ROOT/.env" ]; then
source "$PROJECT_ROOT/.env"
else
echo "错误: .env 文件不存在,请先创建 .env 文件"
echo "可以复制 .env.example 并修改配置"
exit 1
fi
# 检查必需的环境变量
if [ -z "$REMOTE_HOST" ] || [ -z "$REMOTE_USER" ] || [ -z "$REMOTE_PASSWORD" ] || [ -z "$REMOTE_PATH" ]; then
echo "错误: 缺少必需的环境变量"
echo "请确保 .env 文件中包含: REMOTE_HOST, REMOTE_USER, REMOTE_PASSWORD, REMOTE_PATH"
exit 1
fi
# 检查 sshpass 是否安装
if ! command -v sshpass &> /dev/null; then
echo "错误: sshpass 未安装"
echo "请运行: brew install hudochenkov/sshpass/sshpass"
exit 1
fi
# zip 文件目录
ZIP_DIR="$PROJECT_ROOT/zip"
# 查找最新的模板文件
echo "查找最新的模板文件..."
REACT_VITE_ZIP=$(ls -t "$ZIP_DIR"/react-vite-template_*.zip 2>/dev/null | head -1)
VUE3_VITE_ZIP=$(ls -t "$ZIP_DIR"/vue3-vite-template_*.zip 2>/dev/null | head -1)
if [ -z "$REACT_VITE_ZIP" ]; then
echo "错误: 未找到 react-vite-template zip 文件"
exit 1
fi
if [ -z "$VUE3_VITE_ZIP" ]; then
echo "错误: 未找到 vue3-vite-template zip 文件"
exit 1
fi
echo "找到模板文件:"
echo " React Vite: $(basename "$REACT_VITE_ZIP")"
echo " Vue3 Vite: $(basename "$VUE3_VITE_ZIP")"
echo ""
# 创建临时目录
TEMP_DIR=$(mktemp -d)
trap "rm -rf $TEMP_DIR" EXIT
# 复制并重命名文件
echo "准备上传文件..."
cp "$REACT_VITE_ZIP" "$TEMP_DIR/react-vite-template.zip"
cp "$VUE3_VITE_ZIP" "$TEMP_DIR/vue3-vite-template.zip"
# 上传文件
echo ""
echo "开始上传到 $REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH"
echo ""
# 上传 react-vite-template.zip
echo "上传 react-vite-template.zip..."
sshpass -p "$REMOTE_PASSWORD" scp -o StrictHostKeyChecking=no \
"$TEMP_DIR/react-vite-template.zip" \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/react-vite-template.zip"
if [ $? -eq 0 ]; then
echo "✓ react-vite-template.zip 上传成功"
else
echo "✗ react-vite-template.zip 上传失败"
exit 1
fi
# 上传 vue3-vite-template.zip
echo "上传 vue3-vite-template.zip..."
sshpass -p "$REMOTE_PASSWORD" scp -o StrictHostKeyChecking=no \
"$TEMP_DIR/vue3-vite-template.zip" \
"$REMOTE_USER@$REMOTE_HOST:$REMOTE_PATH/vue3-vite-template.zip"
if [ $? -eq 0 ]; then
echo "✓ vue3-vite-template.zip 上传成功"
else
echo "✗ vue3-vite-template.zip 上传失败"
exit 1
fi
echo ""
echo "所有模板上传完成!"
echo ""
echo "提示: file-server 重启与 rcoder 容器重启已拆分为独立脚本"
echo "如需重启 file-server: ./scripts/restart-file-server.sh"
echo "如需重启 rcoder 容器: ./scripts/restart-rcoder.sh"