diff options
Diffstat (limited to 'ozone-cli/src/main.rs')
| -rw-r--r-- | ozone-cli/src/main.rs | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/ozone-cli/src/main.rs b/ozone-cli/src/main.rs index d857cd1..5174348 100644 --- a/ozone-cli/src/main.rs +++ b/ozone-cli/src/main.rs @@ -51,7 +51,7 @@ async fn main_inner(cli: Cli) -> Result<ExitCode, Box<dyn Error>> { } let mut inst = if args.clone { - if let Some(selected_inst) = settings.selected_instance.and_then(|i| settings.instances.get(&i)) { + if let Some(selected_inst) = settings.get_selected_instance() { let mut inst = selected_inst.clone(); inst.name.replace_range(.., &args.name); inst @@ -125,7 +125,7 @@ async fn main_inner(cli: Cli) -> Result<ExitCode, Box<dyn Error>> { settings.save().await?; }, InstanceCommand::Set(args) => { - let Some(inst) = settings.selected_instance.and_then(|i| settings.instances.get_mut(&i)) else { + let Some(inst) = settings.get_selected_instance_mut() else { eprintln!("No instance selected."); return Ok(ExitCode::FAILURE); }; @@ -144,7 +144,7 @@ async fn main_inner(cli: Cli) -> Result<ExitCode, Box<dyn Error>> { settings.save().await?; }, InstanceCommand::Info => { - let Some(inst) = settings.selected_instance.and_then(|i| settings.instances.get(&i)) else { + let Some(inst) = settings.get_selected_instance() else { eprintln!("No instance selected."); return Ok(ExitCode::FAILURE); }; @@ -161,6 +161,20 @@ async fn main_inner(cli: Cli) -> Result<ExitCode, Box<dyn Error>> { if let Some(res) = inst.resolution { println!(" Game resolution: {}x{}", res.width, res.height); } + }, + InstanceCommand::Rename { name } => { + if name.is_empty() { + eprintln!("The instance must not have an empty name."); + return Ok(ExitCode::FAILURE); + } + + let Some(inst) = settings.get_selected_instance_mut() else { + eprintln!("No instance selected."); + return Ok(ExitCode::FAILURE); + }; + + inst.name.replace_range(.., &name); + settings.save().await?; } }, RootCommand::Launch => { |
