ogkr-update-script/index.ts

63 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-05-30 02:02:47 +00:00
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(const line of data) {
if(line.startsWith('VERSION')) {
if(line.trim() === 'VERSION\t1\t6\t0') {
res.push('VERSION\t1\t7\t0\r\n');
isCorrectVersion = true;
}
} else if(line.startsWith('[')) {
isBPalette = line.trim() === '[B_PALETTE]';
res.push(line);
} else if(isBPalette) {
if(line.trim().length > 0) {
res.push(`${line.trim()}\t0\r\n`);
} 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);
console.log(`Updated ${fname}`);
}
}
(async () => {
if(process.argv.length < 3) {
console.log(`Usage: ${process.argv[0]} ${process.argv[1]} <Axyz/music>`);
return;
}
const p = process.argv[2];
const dirs = (await fs.readdir(p));
const promises: Promise<void>[] = [];
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.`);
})();