securegit 0.8.5

Zero-trust git replacement with 12 built-in security scanners, LLM redteam bridge, universal undo, durable backups, and a 50-tool MCP server
Documentation
use crate::plugins::traits::SecurityPlugin;
use std::collections::HashMap;
use std::sync::Arc;

pub struct PluginRegistry {
    plugins: HashMap<String, Arc<dyn SecurityPlugin>>,
}

impl PluginRegistry {
    pub fn new() -> Self {
        Self {
            plugins: HashMap::new(),
        }
    }

    pub fn register(&mut self, plugin: Arc<dyn SecurityPlugin>) {
        self.plugins.insert(plugin.name().to_string(), plugin);
    }

    pub fn get(&self, name: &str) -> Option<Arc<dyn SecurityPlugin>> {
        self.plugins.get(name).cloned()
    }

    pub fn list(&self) -> Vec<String> {
        self.plugins.keys().cloned().collect()
    }

    pub fn enabled_plugins(&self, enabled: &[String]) -> Vec<Arc<dyn SecurityPlugin>> {
        enabled.iter().filter_map(|name| self.get(name)).collect()
    }
}

impl Default for PluginRegistry {
    fn default() -> Self {
        Self::new()
    }
}