项目从akmon迁入到mall
This commit is contained in:
178
doc_mall/migrate.sh
Normal file
178
doc_mall/migrate.sh
Normal file
@@ -0,0 +1,178 @@
|
||||
#!/bin/bash
|
||||
# doc_mall 项目迁移脚本 (Bash)
|
||||
# 用途: 将 doc_mall 模块迁移到新仓库
|
||||
# 使用: ./migrate.sh /path/to/new-repo
|
||||
|
||||
set -e
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 参数检查
|
||||
if [ $# -eq 0 ]; then
|
||||
echo -e "${RED}错误: 请提供目标路径${NC}"
|
||||
echo "用法: $0 <目标路径> [选项]"
|
||||
echo "选项:"
|
||||
echo " --copy-supabase 复制 Supabase 组件"
|
||||
echo " --copy-utils 复制工具函数"
|
||||
echo " --dry-run 预览模式,不实际复制"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TARGET_PATH="$1"
|
||||
SOURCE_PATH="${2:-.}"
|
||||
COPY_SUPABASE=false
|
||||
COPY_UTILS=false
|
||||
DRY_RUN=false
|
||||
|
||||
# 解析选项
|
||||
shift
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--copy-supabase)
|
||||
COPY_SUPABASE=true
|
||||
shift
|
||||
;;
|
||||
--copy-utils)
|
||||
COPY_UTILS=true
|
||||
shift
|
||||
;;
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}未知选项: $1${NC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 获取脚本所在目录
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
SOURCE_ROOT="$( cd "$SOURCE_PATH" && pwd )"
|
||||
|
||||
echo -e "${CYAN}===========================================${NC}"
|
||||
echo -e "${CYAN} doc_mall 项目迁移脚本${NC}"
|
||||
echo -e "${CYAN}===========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${GREEN}源项目路径: $SOURCE_ROOT${NC}"
|
||||
echo -e "${GREEN}目标项目路径: $TARGET_PATH${NC}"
|
||||
echo ""
|
||||
|
||||
# 创建目标目录结构
|
||||
DIRECTORIES=(
|
||||
"$TARGET_PATH/doc_mall/analysis"
|
||||
"$TARGET_PATH/doc_mall/database"
|
||||
"$TARGET_PATH/doc_mall/reports"
|
||||
"$TARGET_PATH/pages/mall"
|
||||
"$TARGET_PATH/types"
|
||||
"$TARGET_PATH/components/supadb"
|
||||
"$TARGET_PATH/utils"
|
||||
)
|
||||
|
||||
echo -e "${YELLOW}创建目标目录结构...${NC}"
|
||||
for dir in "${DIRECTORIES[@]}"; do
|
||||
if [ ! -d "$dir" ]; then
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
echo -e " ${YELLOW}[DRY RUN]${NC} 将创建: $dir"
|
||||
else
|
||||
mkdir -p "$dir"
|
||||
echo -e " ${GREEN}✓${NC} 已创建: $dir"
|
||||
fi
|
||||
else
|
||||
echo -e " - 已存在: $dir"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 复制函数
|
||||
copy_item() {
|
||||
local source="$1"
|
||||
local target="$2"
|
||||
local description="$3"
|
||||
|
||||
echo -e "${CYAN}处理: $description${NC}"
|
||||
|
||||
if [ ! -e "$source" ]; then
|
||||
echo -e " ${RED}✗${NC} 源路径不存在: $source"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
if [ -f "$source" ]; then
|
||||
echo -e " ${YELLOW}[DRY RUN]${NC} 将复制文件: $source -> $target"
|
||||
else
|
||||
file_count=$(find "$source" -type f 2>/dev/null | wc -l)
|
||||
echo -e " ${YELLOW}[DRY RUN]${NC} 将复制目录: $source -> $target"
|
||||
echo -e " 预计复制 $file_count 个文件"
|
||||
fi
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -f "$source" ]; then
|
||||
target_dir=$(dirname "$target")
|
||||
mkdir -p "$target_dir"
|
||||
cp "$source" "$target"
|
||||
echo -e " ${GREEN}✓${NC} 已复制文件"
|
||||
else
|
||||
file_count=$(find "$source" -type f 2>/dev/null | wc -l)
|
||||
cp -r "$source" "$target"
|
||||
echo -e " ${GREEN}✓${NC} 已复制目录: $file_count 个文件"
|
||||
fi
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 复制必需文件
|
||||
echo -e "${YELLOW}开始复制文件...${NC}"
|
||||
echo ""
|
||||
|
||||
copy_item "$SOURCE_ROOT/doc_mall" "$TARGET_PATH/doc_mall" "doc_mall 文档目录"
|
||||
copy_item "$SOURCE_ROOT/pages/mall" "$TARGET_PATH/pages/mall" "pages/mall 页面代码"
|
||||
copy_item "$SOURCE_ROOT/types/mall-types.uts" "$TARGET_PATH/types/mall-types.uts" "类型定义文件"
|
||||
|
||||
# 可选复制项
|
||||
if [ "$COPY_SUPABASE" = true ]; then
|
||||
copy_item "$SOURCE_ROOT/components/supadb" "$TARGET_PATH/components/supadb" "Supabase 客户端组件"
|
||||
fi
|
||||
|
||||
if [ "$COPY_UTILS" = true ]; then
|
||||
echo -e "${YELLOW}检查需要的工具函数...${NC}"
|
||||
# 查找 pages/mall 中的 utils 引用
|
||||
if [ -d "$SOURCE_ROOT/pages/mall" ]; then
|
||||
grep -r "from '@/utils" "$SOURCE_ROOT/pages/mall" --include="*.uvue" | \
|
||||
sed -n "s/.*from '\(@\/utils\/[^']*\)'.*/\1/p" | \
|
||||
sort -u | while read -r util_ref; do
|
||||
util_file=$(echo "$util_ref" | sed "s/@\/utils\///")
|
||||
util_path="$SOURCE_ROOT/utils/$util_file"
|
||||
if [ -f "$util_path" ]; then
|
||||
echo -e " ${CYAN}发现依赖: utils/$util_file${NC}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}===========================================${NC}"
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
echo -e "${YELLOW} [DRY RUN] 预览完成${NC}"
|
||||
else
|
||||
echo -e "${GREEN} 迁移完成!${NC}"
|
||||
fi
|
||||
echo -e "${CYAN}===========================================${NC}"
|
||||
echo ""
|
||||
|
||||
if [ "$DRY_RUN" = false ]; then
|
||||
echo -e "${YELLOW}后续步骤:${NC}"
|
||||
echo "1. 检查目标目录: $TARGET_PATH"
|
||||
echo "2. 更新导入路径(如需要)"
|
||||
echo "3. 配置 Supabase 连接信息"
|
||||
echo "4. 执行数据库脚本"
|
||||
echo "5. 运行测试验证"
|
||||
echo ""
|
||||
echo -e "${CYAN}详细步骤请参考: doc_mall/MIGRATION_GUIDE.md${NC}"
|
||||
fi
|
||||
Reference in New Issue
Block a user