2020-08-20 15:21:03 -05:00
|
|
|
import Discord from 'discord.js';
|
|
|
|
import mysql from 'mysql';
|
|
|
|
import { SquadLayerFilter } from 'core/squad-layers';
|
|
|
|
|
|
|
|
import plugins from 'plugins';
|
|
|
|
|
|
|
|
const connectorTypes = {
|
2020-09-10 08:17:27 -05:00
|
|
|
discordClient: async function (config) {
|
|
|
|
console.log('Starting discordClient connector...');
|
2020-08-20 15:21:03 -05:00
|
|
|
const client = new Discord.Client();
|
|
|
|
await client.login(config);
|
|
|
|
return client;
|
|
|
|
},
|
2020-09-10 08:17:27 -05:00
|
|
|
mysqlPool: async function (config) {
|
|
|
|
console.log('Starting mysqlPool connector...');
|
2020-08-20 15:21:03 -05:00
|
|
|
return mysql.createPool(config);
|
|
|
|
},
|
2020-09-10 08:17:27 -05:00
|
|
|
layerFilter: async function (config) {
|
|
|
|
console.log('Starting layerFilter connector...');
|
2020-08-20 15:21:03 -05:00
|
|
|
return SquadLayerFilter[config.type](config.filter, config.activeLayerFilter);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
export default async function (config) {
|
|
|
|
const connectors = {};
|
|
|
|
|
|
|
|
for (const pluginConfig of config.plugins) {
|
2020-08-22 10:54:05 -05:00
|
|
|
if (!pluginConfig.enabled) continue;
|
2020-08-20 15:21:03 -05:00
|
|
|
|
|
|
|
const plugin = plugins[pluginConfig.plugin];
|
|
|
|
|
|
|
|
for (const optionName of Object.keys(plugin.optionsSpec)) {
|
2020-09-10 08:17:27 -05:00
|
|
|
// check it's a connector
|
|
|
|
if (!Object.keys(connectorTypes).includes(optionName)) continue;
|
2020-08-20 15:21:03 -05:00
|
|
|
|
2020-09-10 08:17:27 -05:00
|
|
|
// check if connector is already setup
|
2020-08-20 15:21:03 -05:00
|
|
|
if (connectors[pluginConfig[optionName]]) continue;
|
2020-09-10 08:17:27 -05:00
|
|
|
|
|
|
|
// check config for connector is present
|
2020-08-20 15:21:03 -05:00
|
|
|
if (!config.connectors[pluginConfig[optionName]])
|
|
|
|
throw new Error(`${pluginConfig[optionName]} connector config not present!`);
|
|
|
|
|
2020-09-10 08:17:27 -05:00
|
|
|
// initiate connector
|
|
|
|
connectors[pluginConfig[optionName]] = await connectorTypes[optionName](
|
2020-08-20 15:21:03 -05:00
|
|
|
config.connectors[pluginConfig[optionName]]
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return connectors;
|
|
|
|
}
|