diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 5439e24..9242dcc 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -1,6 +1,5 @@ name: validate protocol info -on: - pull_request +on: pull_request jobs: validate-protocol-info: @@ -14,3 +13,6 @@ jobs: - name: Validate run: yarn validate + + - name: Aggregate Events + run: yarn aggregateEvents diff --git a/allEvents.json b/allEvents.json new file mode 100644 index 0000000..55b727d --- /dev/null +++ b/allEvents.json @@ -0,0 +1 @@ +[{"title":"Community Call #1","url":"https://docs.google.com/forms/d/e/1FAIpQLSespwUvYs0teDWPeFTi7HKCfHS-i_0StaKahcPHi_Zh4BZzbw/viewform","date":"2021-05-14T15:00:00.000Z","protocol":"banklessvault"},{"title":"Weekly Planning Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/NWk4Ymxna2l1dWhpa25ycWRnbmhrbWdmNWxfMjAyMTAyMTVUMTcwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-15T17:00:00.000Z","protocol":"indexCoop"},{"title":"Org. Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/MW1qaTNqZWJmZTlxYWxidWY1MmdoN3Z0ajVfMjAyMTAyMTdUMTkwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-17T19:00:00.000Z","protocol":"indexCoop"},{"title":"Engineering Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/N285MW85Ym1wMDA5bWswZTNhajZwM2h2cGFfMjAyMTAyMTdUMjEwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-17T21:00:00.000Z","protocol":"indexCoop"},{"title":"Growth Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/M3Jpcmk3dHBlMXM3bHFqbGNiNWV0cWVucnRfMjAyMTAyMThUMjAwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-18T21:20:00.000Z","protocol":"indexCoop"},{"title":"Weekly Planning Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/NWk4Ymxna2l1dWhpa25ycWRnbmhrbWdmNWxfMjAyMTAyMjJUMTcwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-22T17:00:00.000Z","protocol":"indexCoop"},{"title":"Org. Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/MW1qaTNqZWJmZTlxYWxidWY1MmdoN3Z0ajVfMjAyMTAyMjRUMTkwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-24T19:00:00.000Z","protocol":"indexCoop"},{"title":"Engineering Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/N285MW85Ym1wMDA5bWswZTNhajZwM2h2cGFfMjAyMTAyMjRUMjEwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-24T21:00:00.000Z","protocol":"indexCoop"},{"title":"Growth Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/M3Jpcmk3dHBlMXM3bHFqbGNiNWV0cWVucnRfMjAyMTAyMjVUMjAwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-02-25T21:20:00.000Z","protocol":"indexCoop"},{"title":"Weekly Planning Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/NWk4Ymxna2l1dWhpa25ycWRnbmhrbWdmNWxfMjAyMTAzMDFUMTcwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-03-01T17:00:00.000Z","protocol":"indexCoop"},{"title":"Org. Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/MW1qaTNqZWJmZTlxYWxidWY1MmdoN3Z0ajVfMjAyMTAzMDNUMTkwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-03-03T19:00:00.000Z","protocol":"indexCoop"},{"title":"Engineering Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/N285MW85Ym1wMDA5bWswZTNhajZwM2h2cGFfMjAyMTAzMDNUMjEwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-03-03T21:00:00.000Z","protocol":"indexCoop"},{"title":"Growth Work Session","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/M3Jpcmk3dHBlMXM3bHFqbGNiNWV0cWVucnRfMjAyMTAzMDRUMjAwMDAwWiBncmVnQGluZGV4Y29vcC5jb20","date":"2021-03-04T21:20:00.000Z","protocol":"indexCoop"},{"title":"Weekly Brainstorm ⛈","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/Nm1icHFuaGNkbnN2azU2bzdldHZnNTVxYWpfMjAyMTAyMjVUMTgwMDAwWiBkNDY3a2E4aWpkamQ5Mzh1czMzcGhhbWNvc0Bn","date":"2021-02-25T18:00:00.000Z","protocol":"yup"},{"title":"Weekly Brainstorm ⛈","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/Nm1icHFuaGNkbnN2azU2bzdldHZnNTVxYWpfMjAyMTAzMDRUMTgwMDAwWiBkNDY3a2E4aWpkamQ5Mzh1czMzcGhhbWNvc0Bn","date":"2021-03-04T18:00:00.000Z","protocol":"yup"},{"title":"Weekly Brainstorm ⛈","url":"https://calendar.google.com/calendar/u/0/r/eventedit/copy/Nm1icHFuaGNkbnN2azU2bzdldHZnNTVxYWpfMjAyMTAzMTFUMTgwMDAwWiBkNDY3a2E4aWpkamQ5Mzh1czMzcGhhbWNvc0Bn","date":"2021-03-11T18:00:00.000Z","protocol":"yup"}] \ No newline at end of file diff --git a/package.json b/package.json index 116bc85..43fe325 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "bulkAdd": "ts-node ./scripts/bulk_add.ts", "build": "ts-node ./scripts/build.ts && tsc -d", "prepare": "yarn build", + "aggregateEvents": "yarn ./scripts/aggregate_events.ts", "validate": "yarn build && ts-node ./scripts/validate.ts" }, "dependencies": { diff --git a/scripts/aggregate_events.ts b/scripts/aggregate_events.ts new file mode 100644 index 0000000..fbed21b --- /dev/null +++ b/scripts/aggregate_events.ts @@ -0,0 +1,56 @@ +/* + * 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();