Remove a server profile.
(&self, remove: &ServerRemove)
| 422 | |
| 423 | /// Remove a server profile. |
| 424 | fn remove_server(&self, remove: &ServerRemove) -> CliResult<()> { |
| 425 | let mut config = GlobalConfig::load() |
| 426 | .map_err(|e| CliError::Internal(anyhow::anyhow!("Failed to load config: {}", e)))?; |
| 427 | |
| 428 | if config.servers.remove(&remove.name).is_none() { |
| 429 | return Err(CliError::InvalidArgument { |
| 430 | message: format!("Server profile '{}' not found.", remove.name), |
| 431 | }); |
| 432 | } |
| 433 | |
| 434 | // Clear default_server if it pointed to the removed profile |
| 435 | if config.default_server.as_deref() == Some(&remove.name) { |
| 436 | config.default_server = None; |
| 437 | println!( |
| 438 | "Note: '{}' was the active server. Reverted to legacy [server] block.", |
| 439 | remove.name |
| 440 | ); |
| 441 | } |
| 442 | |
| 443 | config |
| 444 | .save() |
| 445 | .map_err(|e| CliError::Internal(anyhow::anyhow!("Failed to save config: {}", e)))?; |
| 446 | |
| 447 | print_success(&format!("Server profile '{}' removed", remove.name)); |
| 448 | Ok(()) |
| 449 | } |
| 450 | |
| 451 | /// Bind (or clear) an identity for a server profile. |
| 452 | fn set_identity_for_server(&self, cmd: &ServerSetIdentity) -> CliResult<()> { |
no test coverage detected