@inghamdev/xlf-merge
Version:
Command-line tool for merging XLF files
52 lines (42 loc) • 1.47 kB
JavaScript
const program = require("commander");
const fs = require("fs");
const convert = require("xml-js");
const shell = require("shelljs");
const mergeXlf = require("./merge-xlf");
const packageVersion = require("./package.json")?.version;
function runMerge(inputPaths, outputPath) {
const inputFiles = (function* () {
yield* shell.ls(inputPaths);
})();
const sourceFile = inputFiles.next().value;
console.log("Initial file", sourceFile);
let fileContent = fs.readFileSync(sourceFile).toString();
let output = convert.xml2js(fileContent);
for (
let fileIter = inputFiles.next();
!fileIter.done;
fileIter = inputFiles.next()
) {
fileContent = fs.readFileSync(fileIter.value).toString();
output = mergeXlf(output, convert.xml2js(fileContent), fileIter.value);
}
const outXml = convert.js2xml(output);
fs.writeFileSync(outputPath, outXml);
console.log("Generated output file", outputPath);
}
//runMerge(['data/test3/generic.xlf', 'data/test3/home-page.xlf', 'data/test3/lesson.xlf'], 'data/test3/out.xlf');
//return;
program
.version(packageVersion)
.usage("[options] <input files or pattern such as *.xlf ...>")
.option("-o, --output <output>", "Output file name")
.parse(process.argv);
if (program.args === 0 || !program.output) {
program.help();
}
try {
runMerge(program.args, program.output);
} catch (err) {
console.error(err);
}