Skip to main content

morph_cli/core/plugins/
mod.rs

1pub mod loader;
2pub mod manifest;
3pub mod registry;
4
5pub use loader::{DiscoveryResult, LoadedPlugin, PluginLoader};
6pub use manifest::{
7    Author, Compatibility, ManifestError, PluginManifest, RecipeEntry, ValidationError,
8};
9pub use registry::{
10    CompatibilityIssue, Conflict, Diagnostics, DiscoveryReport, DiscoveryStatus, PluginEntry,
11    PluginRegistry, RegistryError, RegistrySummary,
12};
13
14use std::path::Path;
15
16pub fn init() -> PluginRegistry {
17    PluginRegistry::new()
18}
19
20pub fn discover_plugins(project_root: &Path) -> PluginRegistry {
21    let mut registry = PluginRegistry::new();
22    registry.discover(project_root);
23    registry
24}
25
26#[cfg(test)]
27mod tests {
28    use super::*;
29
30    #[test]
31    fn test_init() {
32        let registry = init();
33        let summary = registry.summary();
34        assert_eq!(summary.total_plugins, 0);
35    }
36
37    #[test]
38    fn test_discover_plugins() {
39        let registry = discover_plugins(Path::new("/tmp"));
40        assert!(registry.list_plugins().is_empty() || !registry.list_plugins().is_empty());
41    }
42}