morph_cli/core/plugins/
mod.rs1pub 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}