import { rm } from "node:fs/promises";
import { resolve } from "node:path";

const root = resolve(import.meta.dir, "..");

const dirs: Array<{ desc: string; path: string }> = [
  { desc: "构建产物", path: "dist" },
  { desc: "Bun 构建缓存", path: ".build" },
  { desc: "Playwright 测试报告", path: "playwright-report" },
  { desc: "测试结果", path: "test-results" },
  { desc: "发布产物", path: "dist/release" },
];

const filePatterns: Array<{ desc: string; glob: string }> = [{ desc: "Bun 构建临时文件", glob: ".*.bun-build" }];

for (const { desc, path } of dirs) {
  const full = resolve(root, path);
  await rm(full, { force: true, recursive: true });
  console.log(`已清理 ${desc}: ${path}`);
}

for (const { desc, glob } of filePatterns) {
  const entries = await Array.fromAsync(new Bun.Glob(glob).scan({ cwd: root, dot: true }));
  if (entries.length === 0) continue;
  for (const entry of entries) {
    const full = resolve(root, entry);
    await rm(full, { force: true, recursive: true });
    console.log(`已清理 ${desc}: ${entry}`);
  }
}
