Files
stack/agents/darkwing/work/queue-91/r3/mut.mjs
T

12 lines
531 B
JavaScript

// node mut.mjs <file> <from> <to> [<from> <to> ...]: apply each replacement in
// order, each matching exactly once, else exit 3 and leave the file alone.
import { readFileSync, writeFileSync } from 'node:fs';
const [f, ...pairs] = process.argv.slice(2);
let s = readFileSync(f, 'utf8');
for (let i = 0; i < pairs.length; i += 2) {
const n = s.split(pairs[i]).length - 1;
if (n !== 1) { console.error(`edit ${i / 2 + 1}: matches=${n}`); process.exit(3); }
s = s.replace(pairs[i], () => pairs[i + 1]);
}
writeFileSync(f, s);