lib/mergeASRouterData.js (36 lines of code) (raw):
const fs = require("fs");
// NOTE: Add release versions here for all the JSON data
// that is available in `asrouter-local-prod-messages`
let availableReleases = [
135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123,
];
// Sort availableReleases in descending order
// XXX This will need to be revisited if/once we add dot-versions
availableReleases.sort(function (a, b) {
return b - a;
});
console.log(availableReleases);
// Overwriting data.json to ensure we get the latest released version data first
fs.writeFileSync(
"lib/asrouter-local-prod-messages/data.json",
JSON.stringify([]),
);
/**
* Takes all message data for releases in `availableReleases` from
* lib/asrouter-local-prod-messages and merges all message objects into
* `data.json`. For any duplicate messages (ie. messages with the same id),
* we keep the message from the latest release.
*/
function mergeReleases() {
availableReleases.map((release) => {
// Existing message data
let result = fs.readFileSync(
"lib/asrouter-local-prod-messages/data.json",
"utf8",
);
let json_result = JSON.parse(result);
// Release message data
let data = fs.readFileSync(
`lib/asrouter-local-prod-messages/${release.toString()}-release.json`,
"utf8",
);
let json_data = JSON.parse(data);
// Add any message data with an id that does not already exist in data.json
for (let i = 0; i < json_data.length; i++) {
if (!json_result.find((x) => x.id === json_data[i].id)) {
json_result.push(json_data[i]);
}
}
fs.writeFileSync(
"lib/asrouter-local-prod-messages/data.json",
JSON.stringify(json_result),
);
});
}
mergeReleases();