morph-cli 0.1.0

AST-based codebase migration and codemod tool for JavaScript and TypeScript projects.
Documentation
pub mod loader;
pub mod manifest;
pub mod registry;

pub use loader::{DiscoveryResult, LoadedPlugin, PluginLoader};
pub use manifest::{
    Author, Compatibility, ManifestError, PluginManifest, RecipeEntry, ValidationError,
};
pub use registry::{
    CompatibilityIssue, Conflict, Diagnostics, DiscoveryReport, DiscoveryStatus, PluginEntry,
    PluginRegistry, RegistryError, RegistrySummary,
};

use std::path::Path;

pub fn init() -> PluginRegistry {
    PluginRegistry::new()
}

pub fn discover_plugins(project_root: &Path) -> PluginRegistry {
    let mut registry = PluginRegistry::new();
    registry.discover(project_root);
    registry
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_init() {
        let registry = init();
        let summary = registry.summary();
        assert_eq!(summary.total_plugins, 0);
    }

    #[test]
    fn test_discover_plugins() {
        let registry = discover_plugins(Path::new("/tmp"));
        assert!(registry.list_plugins().is_empty() || !registry.list_plugins().is_empty());
    }
}