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

const basePath = path.join(__dirname, "../src/assets");

function detectType(filepath) {
  const ext = path.extname(filepath).toLowerCase();
  if ([".svg", ".png", ".jpg"].includes(ext)) return "image";
  if ([".mp3", ".ogg", ".wav"].includes(ext)) return "audio";
  return "other";
}

function walk(dir, acc = []) {
  const entries = fs.readdirSync(dir);
  for (const entry of entries) {
    if (entry == "manifest.json") continue;
    const fullPath = path.join(dir, entry);
    const relPath = path.relative(basePath, fullPath).replace(/\\/g, "/");
    const stat = fs.statSync(fullPath);

    if (stat.isDirectory()) {
      walk(fullPath, acc);
    } else {
      acc.push({
        path: relPath,
        type: detectType(fullPath),
        size: stat.size,
      });
    }
  }
  return acc;
}

const assets = walk(basePath);
fs.writeFileSync(
  path.join(basePath, "manifest.json"),
  JSON.stringify(assets, null, 2)
);
