import fs from 'node:fs/promises';
import path from 'node:path';

const distDir = 'dist';

async function walk(dir) {
  const entries = await fs.readdir(dir, { withFileTypes: true });
  const files = await Promise.all(
    entries.map(async (entry) => {
      const fullPath = path.join(dir, entry.name);
      if (entry.isDirectory()) {
        return walk(fullPath);
      }
      return fullPath;
    }),
  );

  return files.flat();
}

try {
  const files = await walk(distDir);
  const pngFiles = files.filter((filePath) => filePath.toLowerCase().endsWith('.png'));

  let removed = 0;

  for (const pngFile of pngFiles) {
    const webpFile = pngFile.replace(/\.png$/i, '.webp');

    try {
      await fs.access(webpFile);
      await fs.unlink(pngFile);
      removed += 1;
    } catch {
      // Keep PNGs that have no optimized WebP counterpart.
    }
  }

  console.log(`Pruned ${removed} PNG files from dist.`);
} catch {
  console.log('No dist directory to prune.');
}
