import * as fs from 'fs/promises'; import * as path from 'path'; let g_count = 0; let g_countSkip = 0; const readChart = async (fname: string) => { const data = (await fs.readFile(fname)).toString().split('\n'); let res: string[] = []; let isBPalette = false; let isCorrectVersion = false; for(let line of data) { line = line.trimEnd(); if(line.startsWith('VERSION')) { if(line === 'VERSION\t1\t6\t0') { res.push('VERSION\t1\t7\t0'); isCorrectVersion = true; } } else if(line.startsWith('[')) { isBPalette = line === '[B_PALETTE]'; res.push(line); } else if(isBPalette) { if(line.length > 0) { res.push(`${line}\t0`); } else { res.push(line); } } else { res.push(line); } } if(!isCorrectVersion) { g_countSkip += 1; console.log(`Skipped ${fname}`); } else { g_count += 1; await fs.writeFile(fname, res.join('\r\n')); console.log(`Updated ${fname}`); } } (async () => { if(process.argv.length < 3) { console.log(`Usage: ${process.argv[0]} ${process.argv[1]} `); return; } const p = process.argv[2]; const dirs = (await fs.readdir(p)); const promises: Promise[] = []; for(const dir of dirs) { const subpath = path.join(p, dir); const subdir = await fs.readdir(subpath); for(const file of subdir) { if(file.endsWith("ogkr")) { promises.push(readChart(path.join(p, dir, file))); } } } await Promise.all(promises); console.log(`${g_count} files updated, ${g_countSkip} files skipped.`); })();