import { readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { dirname, join, relative } from "node:path"; import { parse as parseYaml } from "yaml"; import { glob } from "glob"; const LEXICONS_DIR = join(import.meta.dirname, "..", "lexicons"); const OUTPUT_DIR = join(import.meta.dirname, "..", "dist", "json"); async function main() { const yamlFiles = await glob("**/*.yaml", { cwd: LEXICONS_DIR }); for (const yamlFile of yamlFiles) { const inputPath = join(LEXICONS_DIR, yamlFile); const outputPath = join(OUTPUT_DIR, yamlFile.replace(/\.yaml$/, ".json")); mkdirSync(dirname(outputPath), { recursive: true }); const yamlContent = readFileSync(inputPath, "utf-8"); const parsed = parseYaml(yamlContent); writeFileSync(outputPath, JSON.stringify(parsed, null, 2) + "\n"); console.log( ` ${yamlFile} -> ${relative(join(import.meta.dirname, ".."), outputPath)}` ); } console.log(`\nConverted ${yamlFiles.length} lexicon files.`); } main().catch((err) => { console.error(err); process.exit(1); });