Crate vx_plugin

Source
Expand description

§vx-plugin

Plugin system for vx - Universal Development Tool Manager

This crate provides the core plugin architecture for vx, enabling developers to create custom tools and package managers that integrate seamlessly with the vx ecosystem.

§Features

  • Tool Plugins: Create custom tool implementations with automatic version management
  • Package Manager Plugins: Integrate custom package managers with unified interfaces
  • Plugin Registry: Discover and manage plugins dynamically
  • Extensible Architecture: Clean trait-based design for maximum flexibility

§Quick Start

§Creating a Simple Tool Plugin

use vx_plugin::{VxTool, VersionInfo, Result};
use async_trait::async_trait;

struct MyTool;

#[async_trait]
impl VxTool for MyTool {
    fn name(&self) -> &str {
        "mytool"
    }

    async fn fetch_versions(&self, include_prerelease: bool) -> Result<Vec<VersionInfo>> {
        // Implementation here
        Ok(vec![])
    }
}

§Creating a Package Manager Plugin

use async_trait::async_trait;
use std::path::Path;

struct MyPackageManager;

#[async_trait]
impl VxPackageManager for MyPackageManager {
    fn name(&self) -> &str {
        "mypm"
    }

    fn ecosystem(&self) -> Ecosystem {
        Ecosystem::Node
    }

    async fn install_packages(&self, packages: &[PackageSpec], project_path: &Path) -> Result<()> {
        // Implementation here
        Ok(())
    }
}

Re-exports§

pub use package_manager::StandardPackageManager;
pub use package_manager::VxPackageManager;
pub use plugin::StandardPlugin;
pub use plugin::VxPlugin;
pub use registry::PluginRegistry;
pub use registry::PluginRegistryBuilder;
pub use registry::ToolRegistry;
pub use tool::ConfigurableTool;
pub use tool::UrlBuilder;
pub use tool::VersionParser;
pub use tool::VxTool;
pub use types::*;

Modules§

package_manager
Package manager plugin trait and related functionality
plugin
Combined plugin trait and plugin management functionality
registry
Plugin registry for managing and discovering plugins
tool
Tool plugin trait and related functionality
types
Shared types and data structures for the plugin system
utils
Utility functions and helpers for plugin development

Constants§

API_VERSION
Plugin API version for compatibility checking
VERSION
Plugin system version

Type Aliases§

Result