boardroom-inc-protocol-Info/scripts/aggregate_events.ts

57 lines
1.5 KiB
TypeScript
Raw Normal View History

/*
* Script to Aggregate the events for a protocol into a single events.json
* for few necessary requests on consumer end to get all manualy inputted events.
*
* N.B. this script should run in CI in order to make sure the amalgated events is
* always up to date, as we don't want community members to have to input their updates
* in more than one place.
*/
import fs from "fs";
import path from "path";
interface Event {
title: string;
protocol: string;
url: string;
date: string;
}
const directoryPath = path.join(__dirname, "../protocols");
function aggregateEvents() {
// for each folder in ../src
const files = fs.readdirSync(directoryPath);
let allEvents: Event[] = [];
files.forEach(function (filename) {
// add a { protocol: cname } field for each entry
if (filename !== "__example") {
const file = fs.readFileSync(path.join(__dirname, `../protocols/${filename}/events.json`));
try {
const fileAsJson: any = JSON.parse(file.toString());
const info = fs.readFileSync(path.join(__dirname, `../protocols/${filename}/index.json`));
const cname = JSON.parse(info.toString()).cname;
fileAsJson.map((event: any) => {
event.protocol = cname;
console.log(event);
allEvents.push(event);
});
} catch (e) {
console.log("no events");
}
}
});
fs.writeFileSync(path.join(__dirname, `../allEvents.json`), JSON.stringify(allEvents));
}
aggregateEvents();