chore(tool manager): Progress on adding tools

Going to try changing around the download manager to take a generic trait rather than specifically for game downloads

Signed-off-by: quexeky <git@quexeky.dev>
This commit is contained in:
quexeky
2024-12-30 17:09:31 +11:00
parent 2c8164e54f
commit 3299c71b3d
7 changed files with 46 additions and 0 deletions

View File

@ -9,6 +9,7 @@ mod debug;
mod process;
mod remote;
mod state;
mod tools;
#[cfg(test)]
mod tests;

View File

@ -0,0 +1,8 @@
use std::path::PathBuf;
pub trait ExternalComponent {
fn download(&mut self);
fn version(&self) -> &String;
fn is_installed(&self) -> bool;
fn location(&self) -> &Option<PathBuf>;
}

View File

@ -0,0 +1,4 @@
mod external_component;
mod prefix;
mod registry;
mod tool;

View File

View File

@ -0,0 +1,7 @@
use std::collections::HashMap;
use super::external_component::ExternalComponent;
pub struct Registry<T: ExternalComponent> {
tools: HashMap<String, T>
}

View File

@ -0,0 +1,26 @@
use std::path::PathBuf;
use super::external_component::ExternalComponent;
pub struct Tool {
name: String,
version: String,
location: Option<PathBuf>,
}
impl ExternalComponent for Tool {
fn download(&mut self) {
todo!()
}
fn version(&self) -> &String {
&self.version
}
fn is_installed(&self) -> bool {
self.location.is_some()
}
fn location(&self) -> &Option<PathBuf> {
&self.location
}
}