const fs = require('fs').promises
const path = require('path')

// 复制文件夹到指定目录
async function copyDirectory (source, destination) {
  const entries = await fs.readdir(source, { withFileTypes: true });
  await fs.mkdir(destination, { recursive: true });
  for (let entry of entries) {
    const srcPath = path.join(source, entry.name);
    const destPath = path.join(destination, entry.name);
 
    if (entry.isDirectory()) {
      await copyDirectory(srcPath, destPath);
    } else {
      await fs.copyFile(srcPath, destPath);
    }
  }
}

// 删除文件夹
async function deleteDirectory (dir) {
  const isExist = await fileExists(dir)
  if (!isExist) {
    return true
  }
  const entries = await fs.readdir(dir, { withFileTypes: true })
  for (let entry of entries) {
    const fullPath = path.join(dir, entry.name)
    if (entry.isDirectory()) {
      await deleteDirectory(fullPath)
    } else {
      await fs.unlink(fullPath)
    }
  }
  await fs.rmdir(dir)
}

// 判断文件是否存在
async function fileExists(filePath) {
  try {
    await fs.access(filePath);
    return true; // 文件存在
  } catch {
    return false; // 文件不存在
  }
}

module.exports = {
  copyDirectory,
  deleteDirectory
}