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>,
)
| 311 | /// Returns the mutable profile plus its name (`Some` for a named profile, |
| 312 | /// `None` for the legacy block). |
| 313 | pub fn resolve_server_mut( |
| 314 | &mut self, |
| 315 | server_override: Option<&str>, |
| 316 | ) -> Result<(&mut ServerConfig, Option<String>), String> { |
| 317 | // Determine which profile name to target, if any. We resolve the name |
| 318 | // first (immutable borrow) so the mutable borrow below is unambiguous. |
| 319 | let name = if let Some(name) = server_override { |
| 320 | Some(name.to_string()) |
| 321 | } else { |
| 322 | self.default_server.clone() |
| 323 | }; |
| 324 | |
| 325 | match name { |
| 326 | Some(name) => { |
| 327 | let profile = self.servers.get_mut(&name).ok_or_else(|| { |
| 328 | format!( |
| 329 | "Server profile '{}' not found. \ |
| 330 | Use 'atomic server list' to see available profiles, \ |
| 331 | or 'atomic server add {0} <url>' to create it.", |
| 332 | name |
| 333 | ) |
| 334 | })?; |
| 335 | Ok((profile, Some(name))) |
| 336 | } |
| 337 | None => Ok((&mut self.server, None)), |
| 338 | } |
| 339 | } |
| 340 | } |
| 341 | |
| 342 | /// Color output preference |