55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
|
const fs = require('fs');
|
||
|
const path = require('path');
|
||
|
|
||
|
class Registry {
|
||
|
|
||
|
constructor(client) {
|
||
|
|
||
|
this.endpoints = new Map();
|
||
|
this.client = client;
|
||
|
this.path = path.resolve(__dirname);
|
||
|
|
||
|
}
|
||
|
|
||
|
get print() {
|
||
|
const out = [];
|
||
|
this.endpoints.forEach((ep) => out.push(`\t${ep.path} ${ep.initialised ? '' : 'NOT INITIALISED!'}`));
|
||
|
return `Registry print:\n${out.join('\n')}`;
|
||
|
}
|
||
|
|
||
|
async init() {
|
||
|
|
||
|
const dirPath = path.join(this.path, 'endpoints');
|
||
|
//const { info, warn } = this.client.manager;
|
||
|
const { client, endpoints } = this;
|
||
|
|
||
|
return (async function read(pth) {
|
||
|
|
||
|
const dir = fs.readdirSync(pth, { withFileTypes: true });
|
||
|
|
||
|
for (let file of dir) {
|
||
|
|
||
|
if (file.isDirectory()) await read(path.join(pth, file.name));
|
||
|
else {
|
||
|
//info(`Loading endpoint ${file.name}`);
|
||
|
file = path.join(pth, file.name);
|
||
|
let endpoint = require(file);//await import(`file://${file}`);
|
||
|
if (!endpoint) {
|
||
|
// warn(`Issue requiring ${file}`);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
endpoint = new endpoint(client);
|
||
|
endpoints.set(endpoint.name, endpoint);
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}(dirPath));
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
module.exports = Registry;
|