From 92e2e53b161beb10be2c12a19e001ab605106006 Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Sun, 10 Nov 2024 18:47:12 -0800 Subject: [PATCH] Add disk helper functions --- src/app.rs | 2 +- src/components/left.rs | 6 +++--- src/system/disk.rs | 8 ++++++++ src/system/diskpart.rs | 8 ++++---- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/app.rs b/src/app.rs index 5dd523d..a1ec990 100644 --- a/src/app.rs +++ b/src/app.rs @@ -346,7 +346,7 @@ impl App { let disk_list = self.disk_list.lock().unwrap(); if let Some(disk_index) = self.disk_index_dest { if let Some(disk) = disk_list.get(disk_index) { - let disk_id = disk.id.to_owned(); + let disk_id = disk.get_id(); let table_type = self.table_type.clone().unwrap(); let diskpart_script = build_dest_format_script(&disk_id, &table_type); diff --git a/src/components/left.rs b/src/components/left.rs index 0507c36..e57a34e 100644 --- a/src/components/left.rs +++ b/src/components/left.rs @@ -221,19 +221,19 @@ impl Component for Left { // Get list of partitions for destination disk if let Some(index) = &self.disk_id_dest { if let Some(disk) = self.list_disks.get(*index).to_owned() { - self.list_parts.set_items(disk.parts.clone()); + self.list_parts.set_items(disk.get_parts()); // Auto-select first partition and highlight likely OS partition if let Some(table_type) = &self.table_type { match table_type { PartitionTableType::Guid => { - if disk.parts.len() >= 3 { + if disk.num_parts() >= 3 { self.selections[0] = Some(0); self.list_parts.select(2); } } PartitionTableType::Legacy => { - if disk.parts.len() >= 2 { + if disk.num_parts() >= 2 { self.selections[0] = Some(0); self.list_parts.select(1); } diff --git a/src/system/disk.rs b/src/system/disk.rs index 43e3a38..20e2beb 100644 --- a/src/system/disk.rs +++ b/src/system/disk.rs @@ -64,10 +64,18 @@ impl Disk { self.parts_description.push(format!("{part}")); } } + #[must_use] pub fn get_id(&self) -> &str { self.id.as_str() } + + pub fn get_parts(&self) -> Vec { + self.parts.clone() + } + pub fn num_parts(&self) -> usize { + self.parts.len() + } } impl fmt::Display for Disk { diff --git a/src/system/diskpart.rs b/src/system/diskpart.rs index 74974ee..b2f7d9d 100644 --- a/src/system/diskpart.rs +++ b/src/system/diskpart.rs @@ -44,7 +44,7 @@ pub fn add_disk_details(disk: &mut Disk, disk_details: Option<&str>) { if let Some(details_str) = disk_details { details = String::from(details_str); } else { - let script = format!("select disk {}\r\ndetail disk", disk.id); + let script = format!("select disk {}\r\ndetail disk", disk.get_id()); details = run_script(&script); }; @@ -59,7 +59,7 @@ pub fn add_disk_details(disk: &mut Disk, disk_details: Option<&str>) { } else { disk.part_type = PartitionTableType::Legacy; } - disk.serial = get_disk_serial_number(&disk.id); + disk.serial = get_disk_serial_number(&disk.get_id()); } } @@ -78,7 +78,7 @@ pub fn add_partition_details( if let Some(details) = disk_details { contents = String::from(details); } else { - let script = format!("select disk {}\r\nlist partition", disk.id); + let script = format!("select disk {}\r\nlist partition", disk.get_id()); contents = run_script(&script); }; for (_, [number, size]) in RE_LIS.captures_iter(&contents).map(|c| c.extract()) { @@ -94,7 +94,7 @@ pub fn add_partition_details( } // Detail parititon - let mut script = vec![format!("select disk {}", disk.id)]; + let mut script = vec![format!("select disk {}", disk.get_id())]; for part in &disk.parts { if part_details.is_some() { // Currently only used by tests