diff --git a/src/build_tools/cmake.rs b/src/build_tools/cmake.rs new file mode 100644 index 0000000..ad2ce19 --- /dev/null +++ b/src/build_tools/cmake.rs @@ -0,0 +1,35 @@ +use std::collections::HashMap; +use crate::runner::Runner; + +#[derive(Debug, Clone)] +pub struct Cmake { + pub build_dir: String, + pub source_dir: String, + pub vars: Option>, + pub env: Option>, +} + +impl Cmake { + pub fn get_prepare_runner(&self) -> Runner { + let mut args = vec![ + "-B".into(), self.build_dir.clone(), + "-G".into(), "Ninja".into(), + ]; + if self.vars.is_some() { + for (k, v) in self.vars.as_ref().unwrap() { + if k.contains(" ") { + panic!("Cmake vars cannot contain spaces!"); + } + args.push(format!("-D{k}=\"{v}\"", k=k, v=v)); + } + } + args.push(self.source_dir.clone()); + Runner::new(self.env.clone(), "cmake".into(), args) + } + + pub fn get_build_runner(&self) -> Runner { + Runner::new(self.env.clone(), "cmake".into(), vec![ + "--build".into(), self.build_dir.clone() + ]) + } +} diff --git a/src/build_tools/mod.rs b/src/build_tools/mod.rs new file mode 100644 index 0000000..933d74c --- /dev/null +++ b/src/build_tools/mod.rs @@ -0,0 +1 @@ +pub mod cmake; diff --git a/src/main.rs b/src/main.rs index 7be2207..ac97c69 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,7 @@ pub mod runner; pub mod runner_pipeline; pub mod ui; pub mod xr_devices; +pub mod build_tools; fn restore_steam_xr_files() { let active_runtime = get_current_active_runtime(); diff --git a/src/ui/app.rs b/src/ui/app.rs index efeb50f..dc5d3b6 100644 --- a/src/ui/app.rs +++ b/src/ui/app.rs @@ -103,15 +103,6 @@ pub enum Msg { } impl App { - fn get_profile_by_name(&self, name: &String) -> Option<&Profile> { - for profile in &self.profiles { - if &profile.name == name { - return Some(profile); - } - } - return None; - } - pub fn get_selected_profile(&self) -> Profile { self.config.get_selected_profile(&self.profiles) }