Trait VxPlugin

Source
pub trait VxPlugin: Send + Sync {
    // Required method
    fn name(&self) -> &str;

    // Provided methods
    fn description(&self) -> &str { ... }
    fn version(&self) -> &str { ... }
    fn tools(&self) -> Vec<Box<dyn VxTool>> { ... }
    fn package_managers(&self) -> Vec<Box<dyn VxPackageManager>> { ... }
    fn initialize<'life0, 'async_trait>(
        &'life0 mut self,
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait { ... }
    fn supports_tool(&self, tool_name: &str) -> bool { ... }
    fn supports_package_manager(&self, pm_name: &str) -> bool { ... }
    fn metadata(&self) -> HashMap<String, String> { ... }
}
Expand description

Combined plugin trait that can provide both tools and package managers

This is the main trait that plugin developers implement to register their functionality.

Required Methods§

Source

fn name(&self) -> &str

Plugin name (required)

Provided Methods§

Source

fn description(&self) -> &str

Plugin description (optional)

Source

fn version(&self) -> &str

Plugin version (optional)

Source

fn tools(&self) -> Vec<Box<dyn VxTool>>

Get all tools provided by this plugin

Source

fn package_managers(&self) -> Vec<Box<dyn VxPackageManager>>

Get all package managers provided by this plugin

Source

fn initialize<'life0, 'async_trait>( &'life0 mut self, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Initialize the plugin (optional)

Source

fn supports_tool(&self, tool_name: &str) -> bool

Check if this plugin supports a specific tool

Source

fn supports_package_manager(&self, pm_name: &str) -> bool

Check if this plugin supports a specific package manager

Source

fn metadata(&self) -> HashMap<String, String>

Plugin metadata (optional)

Implementors§