- Added a config system to the addons - Added options in the config for dynamic variables - Updated example and code to use new config and options
32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
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 => {
|
|
console.log("Loading addon: ", addonModule);
|
|
addonModule.initialize(nodeIo, addonConfig);
|
|
console.log(`Addon ${addonConfig.name} loaded.`);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|