Skip to content

Instantly share code, notes, and snippets.

@raed667
Created March 8, 2019 08:09
Show Gist options
  • Save raed667/0ccb4abbbcc861a6c221c9edcb602bc8 to your computer and use it in GitHub Desktop.
Save raed667/0ccb4abbbcc861a6c221c9edcb602bc8 to your computer and use it in GitHub Desktop.
Small utility that merges 'checkstyle' files into one
var fs = require("fs");
var xml2js = require("xml2js");
var argv = require("yargs")
.alias("d", "dir")
.alias("o", "out").argv;
var INPUT_DIRECTORY = "./";
var OUTPUT_FILE = INPUT_DIRECTORY + "merged/checkstyle.xml";
if (argv.dir) {
INPUT_DIRECTORY = argv.dir;
}
if (argv.out) {
OUTPUT_FILE = argv.out;
}
// output
var merged = null;
var filenames = fs.readdirSync(INPUT_DIRECTORY);
filenames.forEach(function(filename) {
if (!isFile(filename) || !filename.endsWith(".xml")) {
return;
}
var content = fs.readFileSync(INPUT_DIRECTORY + filename, "utf-8");
var xmlParser = new xml2js.Parser();
xmlParser.parseString(content, function(err, result) {
if (merged == null) {
merged = result;
} else {
merged.checkstyle.file = merged.checkstyle.file.concat(
result.checkstyle.file
);
}
});
});
var xmlBuilder = new xml2js.Builder();
var xml = xmlBuilder.buildObject(merged);
fs.writeFileSync(OUTPUT_FILE, xml);
/** Helper functions */
function isFile(filePath) {
return !fs.lstatSync(filePath).isDirectory();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment