46 lines
1.4 KiB
JavaScript
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.`);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
};
|