pub struct InstallationManager;Expand description
Manages installation commands and dependency validation for AI coding tools
Provides a centralized interface for:
- Checking system dependencies (NPM availability)
- Retrieving installation commands for specific tools
- Validating installation prerequisites
All installation commands are loaded from ai-tools-registry.toml to ensure consistency and enable easy maintenance without code changes.
Implementations§
Source§impl InstallationManager
impl InstallationManager
Sourcepub fn check_npm_available() -> bool
pub fn check_npm_available() -> bool
Checks if NPM is available on the system
Executes npm --version to verify NPM installation and accessibility.
Used to validate prerequisites before attempting NPM-based tool installations.
§Returns
true- NPM is installed and accessiblefalse- NPM is not available or execution failed
§Example
if InstallationManager::check_npm_available() {
println!("NPM is available for tool installation");
} else {
println!("NPM is required but not found");
}Sourcepub fn check_curl_available() -> bool
pub fn check_curl_available() -> bool
Checks if curl is available on the system
Executes curl --version to verify curl installation and accessibility.
Used to validate prerequisites before attempting curl-based tool installations.
§Returns
true- curl is installed and accessiblefalse- curl is not available or execution failed
Sourcepub fn check_uv_available() -> bool
pub fn check_uv_available() -> bool
Checks if uv is available on the system
Executes uv --version to verify uv installation and accessibility.
Used to validate prerequisites before attempting uv-based tool installations.
§Returns
true- uv is installed and accessiblefalse- uv is not available or execution failed
Sourcepub fn get_tool_names() -> Vec<String>
pub fn get_tool_names() -> Vec<String>
Returns a list of all supported tool names
Provides the canonical list of tool names that can be used with
get_install_command.
§Returns
A vector of tool name strings (e.g., [“claude”, “gemini”, “qwen”])
§Example
let tools = InstallationManager::get_tool_names();
for tool in tools {
println!("Supported tool: {}", tool);
}Sourcepub fn get_install_command(tool: &str) -> Option<InstallCommand>
pub fn get_install_command(tool: &str) -> Option<InstallCommand>
Retrieves installation command for a specific tool
§Arguments
tool- The name of the tool (e.g., “claude”, “gemini”)
§Returns
Some(InstallCommand)- Installation command metadata if tool is supportedNone- If the tool name is not recognized
§Example
if let Some(cmd) = InstallationManager::get_install_command("claude") {
println!("Install command: {} {}", cmd.command, cmd.args.join(" "));
} else {
println!("Tool not found");
}Sourcepub fn get_update_command(tool: &str) -> Option<InstallCommand>
pub fn get_update_command(tool: &str) -> Option<InstallCommand>
Retrieves update command for a specific tool
§Arguments
tool- The name of the tool (e.g., “claude”, “gemini”)
§Returns
Some(InstallCommand)- Update command metadata if tool is supportedNone- If the tool name is not recognized
§Example
if let Some(cmd) = InstallationManager::get_update_command("claude") {
println!("Update command: {} {}", cmd.command, cmd.args.join(" "));
} else {
println!("Tool not found");
}Sourcepub fn get_install_commands() -> HashMap<String, InstallCommand>
pub fn get_install_commands() -> HashMap<String, InstallCommand>
Returns all available installation commands
Provides the complete mapping of tool names to their installation commands. This is the authoritative source for all supported tools and their metadata.
§Returns
A HashMap mapping tool names to their InstallCommand structures
§Note
This method loads from the modular TOML configuration files in config/tools/ on each call.
For single-tool lookups, prefer get_install_command.