From d6e0c6d34449224ac3687daf551a0acfd15cee32 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 23 Feb 2026 15:11:36 +0900 Subject: refactor(cli): route command output through Console abstraction Replace direct println\!/eprintln\! calls with console.write(), console.info(), and console.write_stdout() across all command handlers to respect verbosity settings. Co-Authored-By: Claude Opus 4.6 --- crates/mozart/src/commands/search.rs | 40 +++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'crates/mozart/src/commands/search.rs') diff --git a/crates/mozart/src/commands/search.rs b/crates/mozart/src/commands/search.rs index d7be821..b747b0e 100644 --- a/crates/mozart/src/commands/search.rs +++ b/crates/mozart/src/commands/search.rs @@ -1,4 +1,5 @@ use clap::Args; +use mozart_core::console::Verbosity; use mozart_core::console_format; use mozart_registry::packagist::SearchResult; use serde::Serialize; @@ -104,7 +105,7 @@ fn passes_only_vendor(result: &SearchResult, query: &str) -> bool { pub async fn execute( args: &SearchArgs, _cli: &super::Cli, - _console: &mozart_core::console::Console, + console: &mozart_core::console::Console, ) -> anyhow::Result<()> { if args.only_name && args.only_vendor { anyhow::bail!("--only-name and --only-vendor cannot be used together"); @@ -115,12 +116,9 @@ pub async fn execute( let format = args.format.as_deref().unwrap_or("text"); if !matches!(format, "text" | "json") { - eprintln!( - "{}", - console_format!( - "Unsupported format \"{format}\". See help for supported formats." - ) - ); + console.error(&console_format!( + "Unsupported format \"{format}\". See help for supported formats." + )); return Err(mozart_core::exit_code::bail_silent( mozart_core::exit_code::GENERAL_ERROR, )); @@ -153,17 +151,19 @@ pub async fn execute( match format { "json" => { let json = serde_json::to_string_pretty(&vendor_names)?; - println!("{json}"); + console.write_stdout(&json, Verbosity::Normal); } _ => { if vendor_names.is_empty() { - eprintln!( - "{}", - console_format!("No packages found for \"{query}\"") - ); + console.info(&console_format!( + "No packages found for \"{query}\"" + )); } else { for vendor in &vendor_names { - println!("{}", console_format!("{vendor}")); + console.write_stdout( + &console_format!("{vendor}"), + Verbosity::Normal, + ); } } } @@ -179,14 +179,13 @@ pub async fn execute( .map(|r| SearchResultOutput::from(*r)) .collect(); let json = serde_json::to_string_pretty(&output)?; - println!("{json}"); + console.write_stdout(&json, Verbosity::Normal); } _ => { if results.is_empty() { - eprintln!( - "{}", - console_format!("No packages found for \"{query}\"") - ); + console.info(&console_format!( + "No packages found for \"{query}\"" + )); return Ok(()); } @@ -211,7 +210,10 @@ pub async fn execute( }; let padding = " ".repeat(name_width.saturating_sub(result.name.len())); - println!("{}{}{}{}", result.name, padding, warning, desc_display); + console.write_stdout( + &format!("{}{}{}{}", result.name, padding, warning, desc_display), + Verbosity::Normal, + ); } } } -- cgit v1.3.1