diff --git a/rusty_hub/src/hub.rs b/rusty_hub/src/hub.rs new file mode 100644 index 0000000..6794428 --- /dev/null +++ b/rusty_hub/src/hub.rs @@ -0,0 +1,43 @@ +use std::process::Command; + +use crate::{config::Configuration, unity_project::UnityProject}; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub struct Hub { + pub config: Configuration, + pub projects: Vec, +} + +impl Hub { + pub fn new(config: Configuration, projects: Vec) -> Self { + Self { config, projects } + } + + pub fn run_project_nr(&self, nr: usize) { + let project = self.projects[nr].clone(); + let project_version = project.version; + let editor_option = self + .config + .editors_configurations + .clone() + .into_iter() + .find(|editor| editor.version.contains(&project_version)); + + if let Some(editor) = editor_option { + println!("{} -projectpath {}", editor.exe_path, project.path); + Command::new(editor.exe_path) + .arg("-projectpath") + .arg(project.path) + .spawn() + .expect("Failed to run project"); + } + } +} +impl Default for Hub { + fn default() -> Self { + Hub::new( + Configuration::default(), + UnityProject::get_projects_from_registry(), + ) + } +} diff --git a/rusty_hub/src/main.rs b/rusty_hub/src/main.rs index 8ba45a1..4516fb4 100644 --- a/rusty_hub/src/main.rs +++ b/rusty_hub/src/main.rs @@ -1,15 +1,14 @@ -use crate::config::Configuration; #[macro_use] extern crate serde_derive; extern crate confy; mod config; +mod hub; mod unity_editor; mod unity_project; fn main() { - let config = Configuration::default(); - println!("{:#?}", config.editors_configurations); - let projects = unity_project::UnityProject::get_projects_from_registry(); - println!("{:#?}", projects); + let hub = self::hub::Hub::default(); + println!("{:#?}", hub); + // hub.run_project_nr(0); }