Files
discordeno/script/generateHandlerData.ts
Jonathan Ho 987b4058cb Site: update site structure and add architecture page (#2675)
* remove blog

* fix: license

* chore: bump docusaurus

* separate benchmark page

* move to sub folder

* fix blog path

* Chore: update site

* fix: only deploy on push and dispatch

* fix: on:

* ci: merge workflow

* ci: fix if

* refactor: dump preset
2022-12-04 08:36:10 -06:00

39 lines
1.2 KiB
TypeScript

const handlers: {
[index: string]: any;
} = {};
const topDirs = ["./handlers"];
const readDir = async (dirname: string, onContent: (content: string) => void) => {
const files: Deno.DirEntry[] = [];
for (const dirEntry of Deno.readDirSync(dirname)) {
files.push(dirEntry);
}
await Promise.all(
files.map(async (file) => {
if (file.isFile) {
const content = await Deno.readTextFile(dirname + "/" + file.name);
onContent(content);
return;
}
if (file.isDirectory) await readDir(`${dirname}/${file.name}`, onContent);
}),
);
};
await Promise.all(topDirs.map((topDir) =>
readDir(topDir, (content) => {
const handler = content.match(/export function [A-z]+\(/g);
if (handler === null) return;
const transformers = content.match(/bot.transformers.[A-z]+\(/g);
const event = content.match(/bot.events.[A-z]+\(/);
handlers[handler.map((handler) => handler.slice(16, -1))[0]] = {
transformers: transformers === null ? [] : transformers.map((result) => result.slice(4, -1)),
event: event === null ? undefined : event.map((result) => result.slice(4, -1))[0],
};
})
));
console.log(handlers);