#!/usr/bin/env node

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

const diskPath = path.resolve('json/disks');
const dir = fs.readdirSync(diskPath);

const index = [];

for (const fileName of dir.sort()) {
    if (/\.json$/.test(fileName)) {
        const json = fs.readFileSync(path.resolve(diskPath, fileName));
        const data = JSON.parse(json);
        if (data.private) {
            continue;
        }
        if (!data.name || !data.category) {
            continue;
        }

        const entry = {
            filename: `json/disks/${fileName}`,
            e: data['2e'],
            name: data.name,
            disk: data.disk,
            category: data.category,
        };
        index.push(entry);
    }
}

index.sort((x, y) => {
    const xc = x.category.toLowerCase();
    const yc = y.category.toLowerCase();
    const xn = x.name.toLowerCase();
    const yn = y.name.toLowerCase();

    if (xc < yc) {
        return -1;
    } else if (xc > yc) {
        return 1;
    } else if (xn < yn) {
        return -1;
    } else if (xn > yn) {
        return 1;
    } else {
        return 0;
    }
});

fs.writeFileSync(
    path.resolve(diskPath, 'index.js'),
    `disk_index = ${JSON.stringify(index, null, 2)};`
);

fs.writeFileSync(
    path.resolve(diskPath, 'index.json'),
    JSON.stringify(index, null, 2)
);
