#![allow(clippy::module_inception)]
pub mod context;
pub mod error;
pub mod hook;
pub mod libraries;
pub mod plugin;
pub mod provider;
pub mod registry;
pub use context::*;
pub use error::*;
pub use hook::*;
pub use plugin::*;
pub use provider::*;
pub use registry::PluginRegistry;
#[must_use]
pub fn available_plugins() -> Vec<&'static PluginMeta> {
libraries::ALL_PLUGINS.iter().map(|p| p.meta()).collect()
}
#[must_use]
pub fn resolve_plugin_name(name: &str) -> Option<&'static str> {
for plugin in libraries::ALL_PLUGINS.iter() {
if plugin.meta().matches(name) {
return Some(plugin.meta().id);
}
}
None
}
#[must_use]
pub fn create_registry_with_plugins(enabled_plugins: &[String], disable_defaults: bool) -> PluginRegistry {
let mut registry = PluginRegistry::new();
for plugin in libraries::ALL_PLUGINS.iter() {
let meta = plugin.meta();
let explicitly_enabled = enabled_plugins.iter().any(|name| meta.matches(name));
let default_enabled = !disable_defaults && meta.default_enabled;
if explicitly_enabled || default_enabled {
plugin.register(&mut registry);
}
}
registry
}
#[must_use]
pub fn create_registry() -> PluginRegistry {
let mut registry = PluginRegistry::new();
for plugin in libraries::ALL_PLUGINS.iter() {
plugin.register(&mut registry);
}
registry
}