SquadJS/squad-server/plugins/index.js

48 lines
1.1 KiB
JavaScript
Raw Normal View History

2021-01-30 08:39:56 -06:00
import fs from 'fs';
import Logger from 'core/logger';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
class Plugins {
constructor() {
this.plugins = null;
}
async getPlugins(force = false) {
if (this.plugins && !force) return this.plugins;
this.plugins = {};
const dir = await fs.promises.opendir(path.join(__dirname, './'));
2021-01-30 11:01:52 -06:00
const pluginFilenames = [];
2021-01-30 08:39:56 -06:00
for await (const dirent of dir) {
if (!dirent.isFile()) continue;
if (
2021-03-09 14:31:33 -06:00
[
'index.js',
'base-plugin.js',
'discord-base-message-updater.js',
'discord-base-plugin.js',
'readme.md'
].includes(dirent.name)
2021-01-30 08:39:56 -06:00
)
continue;
2021-01-30 11:01:52 -06:00
pluginFilenames.push(dirent.name);
}
2021-01-30 08:39:56 -06:00
2021-01-30 11:01:52 -06:00
for (const pluginFilename of pluginFilenames) {
Logger.verbose('Plugins', 1, `Loading plugin file ${pluginFilename}...`);
const { default: Plugin } = await import(`./${pluginFilename}`);
2021-01-30 08:39:56 -06:00
this.plugins[Plugin.name] = Plugin;
}
return this.plugins;
}
2020-10-05 12:52:01 -05:00
}
2021-01-30 08:39:56 -06:00
export default new Plugins();