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