Files
drb-server/modules/addonManager.mjs
Logan Cusano 117cbea67f
All checks were successful
release-tag / release-image (push) Successful in 1m52s
Lint JavaScript/Node.js / lint-js (push) Successful in 11s
DRB Tests / drb_mocha_tests (push) Successful in 29s
Linting
2024-08-11 15:57:46 -04:00

46 lines
1.4 KiB
JavaScript

import { DebugBuilder } from "../modules/debugger.mjs";
const log = new DebugBuilder("server", "addonManager");
import { fileURLToPath } from "url";
import fs from "fs";
import path from "path";
// Function to load addons from the addons directory
export const loadAddons = async (nodeIo) => {
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const addonsDir = path.join(__dirname, "../addons");
// Read the directory containing addon modules
const addonDirectories = await fs.readdirSync(addonsDir, {
withFileTypes: true,
});
addonDirectories.forEach((addonDir) => {
if (addonDir.isDirectory()) {
const addonConfigPath = path.join(
addonsDir,
addonDir.name,
"config.json",
);
if (fs.existsSync(addonConfigPath)) {
const addonConfig = JSON.parse(
fs.readFileSync(addonConfigPath, "utf-8"),
);
if (addonConfig.enabled) {
const addonIndexPath = path.join(
addonsDir,
addonDir.name,
"index.js",
);
import(`file://${addonIndexPath}`).then((addonModule) => {
log.DEBUG("Loading addon: ", addonModule);
addonModule.initialize(nodeIo, addonConfig);
log.DEBUG(`Addon ${addonConfig.name} loaded.`);
});
}
}
}
});
};