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.`); }); } } } }); }