refactor(cli): tighten Client facade and parallelize system df

- Drop dead http_client() accessor and its allow(dead_code).
- Scope map_api_error to module-private; all call sites are in-file.
- Rename test helper test_api_client to test_client to match what it returns.
- Run system df's two independent server GETs concurrently with try_join!.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-20 09:40:11 -04:00
parent e12c3632e2
commit 9a4b812e2d
No known key found for this signature in database
3 changed files with 19 additions and 28 deletions

View file

@ -427,7 +427,7 @@ mod tests {
use super::*;
fn test_api_client(api_url: &str) -> server_client::Client {
fn test_client(api_url: &str) -> server_client::Client {
server_client::Client::new_no_proxy(api_url).unwrap()
}
@ -534,7 +534,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let response = client.test_model("test-model", None).await.unwrap();
assert_eq!(response.status, api_types::ModelTestResultStatus::Ok);
@ -562,7 +562,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let response = client
.test_model("test-model", Some(api_types::ModelTestMode::Deep))
.await
@ -590,7 +590,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let response = client.test_model("kimi-k2.5", None).await.unwrap();
assert_eq!(response.status, api_types::ModelTestResultStatus::Skip);
@ -614,7 +614,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let result = client.test_model("bad-model", None).await;
assert!(result.is_err());
assert!(result.unwrap_err().to_string().contains("Model not found"));
@ -641,7 +641,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let models = client.list_models(None, None).await.unwrap();
mock.assert_async().await;
@ -672,7 +672,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let models = client.list_models(Some("anthropic"), None).await.unwrap();
assert_eq!(models.len(), 1);
@ -701,7 +701,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let models = client.list_models(None, Some("sonnet")).await.unwrap();
mock.assert_async().await;
@ -747,7 +747,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let models = client.list_models(None, None).await.unwrap();
first_page.assert_async().await;
@ -770,7 +770,7 @@ mod tests {
})
.await;
let client = test_api_client(&server.url(""));
let client = test_client(&server.url(""));
let result = client.list_models(None, None).await;
assert!(result.is_err());
}

View file

@ -19,13 +19,16 @@ pub(super) async fn df_command(
) -> Result<()> {
let ctx = CommandContext::for_connection(&args.connection, printer, cli.clone(), cli_layer)?;
let server = ctx.server().await?;
let output = server.get_system_disk_usage(args.verbose).await?;
let json = cli.output.format == OutputFormat::Json;
let storage_dir = if json {
None
let (output, storage_dir) = if json {
(server.get_system_disk_usage(args.verbose).await?, None)
} else {
server.get_system_info().await?.storage_dir
let (output, info) = tokio::try_join!(
server.get_system_disk_usage(args.verbose),
server.get_system_info(),
)?;
(output, info.storage_dir)
};
df_from(&output, storage_dir.as_deref(), json)

View file

@ -468,18 +468,6 @@ impl Client {
self.clone()
}
#[allow(
dead_code,
reason = "This accessor is kept for tests and pending callers."
)]
pub(crate) fn http_client(&self) -> &fabro_http::HttpClient {
&self.http_client
}
#[allow(
dead_code,
reason = "This accessor is kept for tests and pending callers."
)]
pub(crate) fn base_url(&self) -> &str {
&self.base_url
}
@ -1259,7 +1247,7 @@ impl Client {
}
}
pub(crate) fn map_api_error<E>(err: progenitor_client::Error<E>) -> anyhow::Error
fn map_api_error<E>(err: progenitor_client::Error<E>) -> anyhow::Error
where
E: serde::Serialize + std::fmt::Debug,
{