63 lines
1.8 KiB
TypeScript
63 lines
1.8 KiB
TypeScript
|
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.`);
|
||
|
})();
|