From 795585e2899f9f785b284339cd7b0097747998c4 Mon Sep 17 00:00:00 2001 From: Thomas Mühlbacher Date: Wed, 26 Jun 2024 18:14:24 +0200 Subject: refactor: simplify branches for parsing dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Less repetition and no nested if/else. Signed-off-by: Thomas Mühlbacher --- src/commands/mount.rs | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'src/commands') diff --git a/src/commands/mount.rs b/src/commands/mount.rs index 7a994bde..18b4aae5 100644 --- a/src/commands/mount.rs +++ b/src/commands/mount.rs @@ -317,26 +317,24 @@ fn cmd_mount_inner(cli: &Cli) -> Result<()> { // Grab the udev information once let udev_info = udev_bcachefs_info()?; - let (devices, sbs) = if let Some(uuid) = cli.dev.strip_prefix("UUID=") { - devs_str_sbs_from_uuid(&udev_info, uuid)? - } else if let Some(uuid) = cli.dev.strip_prefix("OLD_BLKID_UUID=") { + let (devices, sbs) = if let Some(("UUID" | "OLD_BLKID_UUID", uuid)) = cli.dev.split_once('=') { devs_str_sbs_from_uuid(&udev_info, uuid)? + } else if cli.dev.contains(':') { + // If the device string contains ":" we will assume the user knows the + // entire list. If they supply a single device it could be either the FS + // only has 1 device or it's only 1 of a number of devices which are + // part of the FS. This appears to be the case when we get called during + // fstab mount processing and the fstab specifies a UUID. + + let sbs = cli + .dev + .split(':') + .map(read_super_silent) + .collect::>>()?; + + (cli.dev.clone(), sbs) } else { - // If the device string contains ":" we will assume the user knows the entire list. - // If they supply a single device it could be either the FS only has 1 device or it's - // only 1 of a number of devices which are part of the FS. This appears to be the case - // when we get called during fstab mount processing and the fstab specifies a UUID. - if cli.dev.contains(':') { - let sbs = cli - .dev - .split(':') - .map(read_super_silent) - .collect::>>()?; - - (cli.dev.clone(), sbs) - } else { - devs_str_sbs_from_device(&udev_info, Path::new(&cli.dev))? - } + devs_str_sbs_from_device(&udev_info, Path::new(&cli.dev))? }; ensure!(!sbs.is_empty(), "No device(s) to mount specified"); -- cgit v1.2.3