Resolve the effective server config mutably, honouring the optional name override. Mirrors the resolution order of [`resolve_server`](Self::resolve_server) so that writes (e.g. `atomic org set`, `atomic workspace set`) land on the same profile that reads resolve to: 1. `server_override` (from `--server ` CLI flag) 2. `default_server` (from `~/.atomic/config.toml`) 3. Legacy `server` block
(
&mut self,
server_override: Option<&str>,
)
| 324 | /// Returns the mutable profile plus its name (`Some` for a named profile, |
| 325 | /// `None` for the legacy block). |
| 326 | pub fn resolve_server_mut( |
| 327 | &mut self, |
| 328 | server_override: Option<&str>, |
| 329 | ) -> Result<(&mut ServerConfig, Option<String>), String> { |
| 330 | // Determine which profile name to target, if any. We resolve the name |
| 331 | // first (immutable borrow) so the mutable borrow below is unambiguous. |
| 332 | let name = if let Some(name) = server_override { |
| 333 | Some(name.to_string()) |
| 334 | } else { |
| 335 | self.default_server.clone() |
| 336 | }; |
| 337 | |
| 338 | match name { |
| 339 | Some(name) => { |
| 340 | let profile = self.servers.get_mut(&name).ok_or_else(|| { |
| 341 | format!( |
| 342 | "Server profile '{}' not found. \ |
| 343 | Use 'atomic server list' to see available profiles, \ |
| 344 | or 'atomic server add {0} <url>' to create it.", |
| 345 | name |
| 346 | ) |
| 347 | })?; |
| 348 | Ok((profile, Some(name))) |
| 349 | } |
| 350 | None => Ok((&mut self.server, None)), |
| 351 | } |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | /// Color output preference |