Implements `spacetime server remove`.
(&mut self, server: &str)
| 286 | |
| 287 | /// Implements `spacetime server remove`. |
| 288 | fn remove_server(&mut self, server: &str) -> anyhow::Result<()> { |
| 289 | // Have to find the server config manually instead of doing `find_server_mut` |
| 290 | // because we need to mutably borrow multiple components of `self`. |
| 291 | if let Some(idx) = self |
| 292 | .server_configs |
| 293 | .iter() |
| 294 | .position(|cfg| cfg.nick_or_host_or_url_is(server)) |
| 295 | { |
| 296 | // Actually remove the config. |
| 297 | let cfg = self.server_configs.remove(idx); |
| 298 | |
| 299 | // If we're removing the default server, |
| 300 | // unset the default server. |
| 301 | if let Some(default_server) = &self.default_server |
| 302 | && cfg.nick_or_host_or_url_is(default_server) |
| 303 | { |
| 304 | self.default_server = None; |
| 305 | } |
| 306 | |
| 307 | return Ok(()); |
| 308 | } |
| 309 | Err(no_such_server_error(server)) |
| 310 | } |
| 311 | |
| 312 | /// Return the ECDSA public key in PEM format for the server named by `server`. |
| 313 | /// |
no test coverage detected