From f71855cf1932a4ebbf675a7602c068a4784ddcaf Mon Sep 17 00:00:00 2001 From: PLYSHKA Date: Sun, 7 Jan 2024 19:38:01 +0000 Subject: [PATCH] feat: added branch specification for each service --- src/build_tools/git.rs | 4 +-- src/builders/build_basalt.rs | 5 +++- src/builders/build_libsurvive.rs | 5 +++- src/builders/build_monado.rs | 5 +++- src/builders/build_opencomposite.rs | 5 +++- src/builders/build_openhmd.rs | 5 +++- src/builders/build_wivrn.rs | 5 +++- src/profile.rs | 17 +++++++++++- src/profiles/openhmd.rs | 1 + src/profiles/survive.rs | 1 + src/profiles/wmr.rs | 1 + src/ui/profile_editor.rs | 40 +++++++++++++++++++++++++++++ test/files/profile.json | 10 +++++--- 13 files changed, 92 insertions(+), 12 deletions(-) diff --git a/src/build_tools/git.rs b/src/build_tools/git.rs index 39b3bb9..8476938 100644 --- a/src/build_tools/git.rs +++ b/src/build_tools/git.rs @@ -6,7 +6,7 @@ use std::path::Path; pub struct Git { pub repo: String, pub dir: String, - pub default_branch: String, + pub branch: String, } impl Git { @@ -88,7 +88,7 @@ impl Git { } pub fn get_checkout_ref_job(&self) -> WorkerJob { - let gref = self.get_ref().unwrap_or(self.default_branch.clone()); + let gref = self.get_ref().unwrap_or(self.branch.clone()); self.cmd(vec!["checkout".into(), gref]) } diff --git a/src/builders/build_basalt.rs b/src/builders/build_basalt.rs index c71e814..056d107 100644 --- a/src/builders/build_basalt.rs +++ b/src/builders/build_basalt.rs @@ -18,7 +18,10 @@ pub fn get_build_basalt_jobs(profile: &Profile, clean_build: bool) -> VecDeque "https://gitlab.freedesktop.org/mateosss/basalt.git".into(), }, dir: profile.features.basalt.path.as_ref().unwrap().clone(), - default_branch: "main".into(), + branch: match profile.features.basalt.branch.as_ref() { + Some(r) => r.clone(), + None => "main".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/builders/build_libsurvive.rs b/src/builders/build_libsurvive.rs index 61dd992..4c0e2bc 100644 --- a/src/builders/build_libsurvive.rs +++ b/src/builders/build_libsurvive.rs @@ -18,7 +18,10 @@ pub fn get_build_libsurvive_jobs(profile: &Profile, clean_build: bool) -> VecDeq None => "https://github.com/cntools/libsurvive".into(), }, dir: profile.features.libsurvive.path.as_ref().unwrap().clone(), - default_branch: "master".into(), + branch: match profile.features.libsurvive.branch.as_ref() { + Some(r) => r.clone(), + None => "master".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/builders/build_monado.rs b/src/builders/build_monado.rs index 89cb9dd..0dcea4c 100644 --- a/src/builders/build_monado.rs +++ b/src/builders/build_monado.rs @@ -22,7 +22,10 @@ pub fn get_build_monado_jobs( None => "https://gitlab.freedesktop.org/monado/monado".into(), }, dir: profile.xrservice_path.clone(), - default_branch: "main".into(), + branch: match profile.xrservice_branch.as_ref() { + Some(r) => r.clone(), + None => "main".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/builders/build_opencomposite.rs b/src/builders/build_opencomposite.rs index a5b61b0..72394d1 100644 --- a/src/builders/build_opencomposite.rs +++ b/src/builders/build_opencomposite.rs @@ -22,7 +22,10 @@ pub fn get_build_opencomposite_jobs( None => "https://gitlab.com/znixian/OpenOVR.git".into(), }, dir: profile.opencomposite_path.clone(), - default_branch: "openxr".into(), + branch: match profile.opencomposite_branch.as_ref() { + Some(r) => r.clone(), + None => "openxr".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/builders/build_openhmd.rs b/src/builders/build_openhmd.rs index 10ee072..8d4a47e 100644 --- a/src/builders/build_openhmd.rs +++ b/src/builders/build_openhmd.rs @@ -18,7 +18,10 @@ pub fn get_build_openhmd_jobs(profile: &Profile, clean_build: bool) -> VecDeque< None => "https://github.com/OpenHMD/OpenHMD".into(), }, dir: profile.features.openhmd.path.as_ref().unwrap().clone(), - default_branch: "master".into(), + branch: match profile.features.openhmd.branch.as_ref() { + Some(r) => r.clone(), + None => "master".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/builders/build_wivrn.rs b/src/builders/build_wivrn.rs index abc55b1..255c4d5 100644 --- a/src/builders/build_wivrn.rs +++ b/src/builders/build_wivrn.rs @@ -22,7 +22,10 @@ pub fn get_build_wivrn_jobs( None => "https://github.com/Meumeu/WiVRn".into(), }, dir: profile.xrservice_path.clone(), - default_branch: "master".into(), + branch: match profile.xrservice_branch.as_ref() { + Some(r) => r.clone(), + None => "master".into(), + }, }; jobs.extend(git.get_pre_build_jobs(profile.pull_on_build)); diff --git a/src/profile.rs b/src/profile.rs index 651f224..07154c7 100644 --- a/src/profile.rs +++ b/src/profile.rs @@ -90,6 +90,7 @@ pub struct ProfileFeature { pub enabled: bool, pub path: Option, pub repo: Option, + pub branch: Option, } impl Default for ProfileFeature { @@ -99,6 +100,7 @@ impl Default for ProfileFeature { enabled: false, path: None, repo: None, + branch: None, } } } @@ -210,10 +212,12 @@ pub struct Profile { pub xrservice_type: XRServiceType, pub xrservice_path: String, pub xrservice_repo: Option, + pub xrservice_branch: Option, #[serde(default = "HashMap::::default")] pub xrservice_cmake_flags: HashMap, pub opencomposite_path: String, pub opencomposite_repo: Option, + pub opencomposite_branch: Option, pub features: ProfileFeatures, pub environment: HashMap, /** Install prefix */ @@ -243,24 +247,28 @@ impl Default for Profile { xrservice_path: format!("{}/xrservice", profile_dir), xrservice_type: XRServiceType::Monado, xrservice_repo: None, + xrservice_branch: None, xrservice_cmake_flags: HashMap::::default(), features: ProfileFeatures { libsurvive: ProfileFeature { enabled: false, path: Some(format!("{}/libsurvive", profile_dir)), repo: None, + branch: None, feature_type: ProfileFeatureType::Libsurvive, }, basalt: ProfileFeature { enabled: false, path: Some(format!("{}/basalt", profile_dir)), repo: None, + branch: None, feature_type: ProfileFeatureType::Basalt, }, openhmd: ProfileFeature { enabled: false, path: Some(format!("{}/openhmd", profile_dir)), repo: None, + branch: None, feature_type: ProfileFeatureType::OpenHmd, }, mercury_enabled: false, @@ -269,8 +277,9 @@ impl Default for Profile { prefix: format!("{}/prefixes/{}", get_data_dir(), uuid), can_be_built: true, pull_on_build: true, - opencomposite_repo: None, opencomposite_path: format!("{}/opencomposite", profile_dir), + opencomposite_repo: None, + opencomposite_branch: None, editable: true, lighthouse_driver: LighthouseDriver::default(), xrservice_launch_options: String::default(), @@ -337,17 +346,22 @@ impl Profile { dup.name = format!("Duplicate of {}", self.name); dup.xrservice_type = self.xrservice_type.clone(); dup.xrservice_repo = self.xrservice_repo.clone(); + dup.xrservice_branch = self.xrservice_branch.clone(); dup.xrservice_cmake_flags = self.xrservice_cmake_flags.clone(); dup.features.libsurvive.enabled = self.features.libsurvive.enabled; dup.features.libsurvive.repo = self.features.libsurvive.repo.clone(); + dup.features.libsurvive.branch = self.features.libsurvive.branch.clone(); dup.features.basalt.enabled = self.features.basalt.enabled; dup.features.basalt.repo = self.features.basalt.repo.clone(); + dup.features.basalt.branch = self.features.basalt.branch.clone(); dup.features.openhmd.enabled = self.features.openhmd.enabled; dup.features.openhmd.repo = self.features.openhmd.repo.clone(); + dup.features.openhmd.branch = self.features.openhmd.branch.clone(); dup.features.mercury_enabled = self.features.mercury_enabled; dup.environment = self.environment.clone(); dup.pull_on_build = self.pull_on_build; dup.opencomposite_repo = self.opencomposite_repo.clone(); + dup.opencomposite_branch = self.opencomposite_branch.clone(); dup.lighthouse_driver = self.lighthouse_driver; dup.xrservice_launch_options = self.xrservice_launch_options.clone(); dup @@ -467,6 +481,7 @@ mod tests { enabled: true, path: Some(String::from("/home/user/libsurvive")), repo: None, + branch: None, }, basalt: ProfileFeature::default_basalt(), openhmd: ProfileFeature::default_openhmd(), diff --git a/src/profiles/openhmd.rs b/src/profiles/openhmd.rs index d7ac3e9..e23ee9f 100644 --- a/src/profiles/openhmd.rs +++ b/src/profiles/openhmd.rs @@ -34,6 +34,7 @@ pub fn openhmd_profile() -> Profile { enabled: true, path: Some(data_openhmd_path()), repo: None, + branch: None, }, ..Default::default() }, diff --git a/src/profiles/survive.rs b/src/profiles/survive.rs index 67fa07d..feb5564 100644 --- a/src/profiles/survive.rs +++ b/src/profiles/survive.rs @@ -36,6 +36,7 @@ pub fn survive_profile() -> Profile { enabled: true, path: Some(data_libsurvive_path()), repo: None, + branch: None, }, ..Default::default() }, diff --git a/src/profiles/wmr.rs b/src/profiles/wmr.rs index bf7d07c..812c81a 100644 --- a/src/profiles/wmr.rs +++ b/src/profiles/wmr.rs @@ -34,6 +34,7 @@ pub fn wmr_profile() -> Profile { enabled: true, path: Some(data_basalt_path()), repo: None, + branch: None, }, mercury_enabled: true, ..Default::default() diff --git a/src/ui/profile_editor.rs b/src/ui/profile_editor.rs index b3127b3..3087a92 100644 --- a/src/ui/profile_editor.rs +++ b/src/ui/profile_editor.rs @@ -176,6 +176,14 @@ impl SimpleComponent for ProfileEditor { prof.borrow_mut().xrservice_repo = (!n_val.is_empty()).then_some(n_val); }) ), + add: &entry_row( + "XR Service Branch", + model.profile.borrow().xrservice_branch.clone().unwrap_or_default().as_str(), + clone!(@strong prof => move |row| { + let n_val = row.text().to_string(); + prof.borrow_mut().xrservice_branch = (!n_val.is_empty()).then_some(n_val); + }) + ), }, add: model.xrservice_cmake_flags_rows.widget(), add: opencompgrp = &adw::PreferencesGroup { @@ -197,6 +205,14 @@ impl SimpleComponent for ProfileEditor { prof.borrow_mut().opencomposite_repo = (!n_val.is_empty()).then_some(n_val); }) ), + add: &entry_row( + "OpenComposite Branch", + model.profile.borrow().opencomposite_branch.clone().unwrap_or_default().as_str(), + clone!(@strong prof => move |row| { + let n_val = row.text().to_string(); + prof.borrow_mut().opencomposite_branch = (!n_val.is_empty()).then_some(n_val); + }) + ), }, add: libsurvivegrp = &adw::PreferencesGroup { set_title: "Libsurvive", @@ -225,6 +241,14 @@ impl SimpleComponent for ProfileEditor { prof.borrow_mut().features.libsurvive.repo = (!n_val.is_empty()).then_some(n_val); }) ), + add: &entry_row( + "Libsurvive Branch", + model.profile.borrow().features.libsurvive.branch.clone().unwrap_or_default().as_str(), + clone!(@strong prof => move |row| { + let n_val = row.text().to_string(); + prof.borrow_mut().features.libsurvive.branch = (!n_val.is_empty()).then_some(n_val); + }) + ), }, add: openhmdgrp = &adw::PreferencesGroup { set_title: "OpenHMD", @@ -253,6 +277,14 @@ impl SimpleComponent for ProfileEditor { prof.borrow_mut().features.openhmd.repo = (!n_val.is_empty()).then_some(n_val); }) ), + add: &entry_row( + "OpenHMD Branch", + model.profile.borrow().features.openhmd.branch.clone().unwrap_or_default().as_str(), + clone!(@strong prof => move |row| { + let n_val = row.text().to_string(); + prof.borrow_mut().features.openhmd.branch = (!n_val.is_empty()).then_some(n_val); + }) + ), }, add: basaltgrp = &adw::PreferencesGroup { set_title: "Basalt", @@ -281,6 +313,14 @@ impl SimpleComponent for ProfileEditor { prof.borrow_mut().features.basalt.repo = n_val.is_empty().then_some(n_val); }) ), + add: &entry_row( + "Basalt Branch", + model.profile.borrow().features.basalt.branch.clone().unwrap_or_default().as_str(), + clone!(@strong prof => move |row| { + let n_val = row.text().to_string(); + prof.borrow_mut().features.basalt.branch = n_val.is_empty().then_some(n_val); + }) + ), }, add: mercurygrp = &adw::PreferencesGroup { set_title: "Mercury", diff --git a/test/files/profile.json b/test/files/profile.json index 92a9adf..cb69c6f 100644 --- a/test/files/profile.json +++ b/test/files/profile.json @@ -4,20 +4,24 @@ "xrservice_type": "Monado", "xrservice_path": "/home/user/monado", "xrservice_repo": null, + "xrservice_branch": null, "opencomposite_path": "/home/user/opencomposite", "opencomposite_repo": null, + "opencomposite_branch": null, "features": { "libsurvive": { "feature_type": "Libsurvive", "enabled": true, "path": "/home/user/libsurvive", - "repo": null + "repo": null, + "branch": null }, "basalt": { "feature_type": "Basalt", "enabled": false, "path": null, - "repo": null + "repo": null, + "branch": null }, "mercury_enabled": false }, @@ -30,4 +34,4 @@ "can_be_built": true, "editable": true, "pull_on_build": true -} +} \ No newline at end of file