pub struct ConfigurableTool { /* private fields */ }
Expand description
Configuration-driven tool implementation
This tool uses configuration to determine download URLs and version sources, making it highly configurable without code changes.
Implementations§
Source§impl ConfigurableTool
impl ConfigurableTool
Sourcepub fn new(
metadata: ToolMetadata,
url_builder: Box<dyn UrlBuilder>,
version_parser: Box<dyn VersionParser>,
) -> Self
pub fn new( metadata: ToolMetadata, url_builder: Box<dyn UrlBuilder>, version_parser: Box<dyn VersionParser>, ) -> Self
Create a new configurable tool
Sourcepub fn metadata(&self) -> &ToolMetadata
pub fn metadata(&self) -> &ToolMetadata
Get the tool metadata
Trait Implementations§
Source§impl VxTool for ConfigurableTool
impl VxTool for ConfigurableTool
Source§fn description(&self) -> &str
fn description(&self) -> &str
Tool description (optional, has default) Read more
Source§fn fetch_versions<'life0, 'async_trait>(
&'life0 self,
include_prerelease: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn fetch_versions<'life0, 'async_trait>(
&'life0 self,
include_prerelease: bool,
) -> Pin<Box<dyn Future<Output = Result<Vec<VersionInfo>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Fetch available versions from the tool’s official source Read more
Source§fn get_download_url<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_download_url<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get download URL for a specific version and current platform Read more
Source§fn metadata(&self) -> HashMap<String, String>
fn metadata(&self) -> HashMap<String, String>
Additional metadata for the tool (optional) Read more
Source§fn install_version<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn install_version<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Install a specific version of the tool Read more
Source§fn is_version_installed<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn is_version_installed<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if a version is installed Read more
Source§fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
args: &'life1 [String],
context: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolExecutionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn execute<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
args: &'life1 [String],
context: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolExecutionResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Execute the tool with given arguments Read more
Source§fn get_executable_path<'life0, 'life1, 'async_trait>(
&'life0 self,
install_dir: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<PathBuf>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_executable_path<'life0, 'life1, 'async_trait>(
&'life0 self,
install_dir: &'life1 Path,
) -> Pin<Box<dyn Future<Output = Result<PathBuf>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get the executable path within an installation directory Read more
Source§fn get_version_install_dir(&self, version: &str) -> PathBuf
fn get_version_install_dir(&self, version: &str) -> PathBuf
Get installation directory for a specific version Read more
Source§fn get_base_install_dir(&self) -> PathBuf
fn get_base_install_dir(&self) -> PathBuf
Get base installation directory for this tool Read more
Source§fn get_active_version<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_active_version<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the currently active version Read more
Source§fn get_installed_versions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_installed_versions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get all installed versions Read more
Source§fn remove_version<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_version<'life0, 'life1, 'async_trait>(
&'life0 self,
version: &'life1 str,
force: bool,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Remove a specific version of the tool Read more
Source§fn get_status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ToolStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_status<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ToolStatus>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get tool status (installed versions, active version, etc.) Read more
Source§fn default_install_workflow<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
version: &'life1 str,
install_dir: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<PathBuf>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn default_install_workflow<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
version: &'life1 str,
install_dir: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<PathBuf>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Default installation workflow (download + extract) Read more
Auto Trait Implementations§
impl Freeze for ConfigurableTool
impl !RefUnwindSafe for ConfigurableTool
impl Send for ConfigurableTool
impl Sync for ConfigurableTool
impl Unpin for ConfigurableTool
impl !UnwindSafe for ConfigurableTool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more