const fs = require('fs');
const path = require('path');

// 定义源目录和目标目录路径
const srcDir = path.resolve(__dirname, '../..', 'dist');
const destDir = path.resolve(__dirname, '../..', 'pack');

/**
 * 递归拷贝目录内容
 * @param {string} src - 源目录路径
 * @param {string} dest - 目标目录路径
 */
function copyDir(src, dest) {
    // 检查源目录是否存在
    if (!fs.existsSync(src)) {
        console.error(`错误：源目录不存在 - ${src}`);
        process.exit(1);
    }

    // 创建目标目录（如果不存在）
    if (!fs.existsSync(dest)) {
        fs.mkdirSync(dest, { recursive: true });
        console.log(`创建目标目录：${dest}`);
    }

    // 读取源目录内容
    const entries = fs.readdirSync(src, { withFileTypes: true });

    for (const entry of entries) {
        const srcPath = path.join(src, entry.name);
        const destPath = path.join(dest, entry.name);

        if (entry.isDirectory()) {
            // 递归处理子目录
            copyDir(srcPath, destPath);
        } else {
            // 拷贝文件
            fs.copyFileSync(srcPath, destPath);
            console.log(`已拷贝：${srcPath} -> ${destPath}`);
        }
    }
}

// 执行拷贝并处理错误
try {
    console.log('开始拷贝文件...');
    copyDir(srcDir, destDir);
    console.log('文件拷贝完成！');
} catch (err) {
    console.error('拷贝过程中发生错误：', err);
    process.exit(1);
}