protected function getPlugins(array $config)
{
if (!isset($config['plugins'])) {
throw new \RuntimeException('Configuration must contain a "plugins" key');
}
if (!is_array($config['plugins'])) {
throw new \RuntimeException('Configuration "plugins" key must reference an array');
}
$plugins = array_filter($config['plugins'], function ($plugin) {
return $plugin instanceof PluginInterface;
});
if (count($plugins) != count($config['plugins'])) {
throw new \RuntimeException('All configuration "plugins" array values must implement \\Phergie\\Irc\\Bot\\React\\PluginInterface');
}
$this->registerPluginSubscribers($plugins);
$processors = $this->getPluginProcessors($config);
$this->processPlugins($plugins, $processors);
return $plugins;
}