diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-22 00:37:54 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-22 00:37:54 +0900 |
| commit | 0a8e5935e6305819bb02d8c69e2f046ff397913a (patch) | |
| tree | e5a288e679477b1603d7989e986ca22bbe590aa4 /crates/mozart/src/commands/search.rs | |
| parent | b5af594fec7da72b15c9a202c641af0494db6355 (diff) | |
| download | php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.gz php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.zst php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.zip | |
refactor(workspace): split monolithic crate into 6 workspace crates
Extract modules from the single `mozart` crate into 5 focused library
crates to improve compilation parallelism and architectural clarity:
- mozart-constraint: version constraint parser (independent)
- mozart-core: base types, console, validation, platform utilities
- mozart-archiver: archive creation (tar, zip, bzip2)
- mozart-registry: Packagist API, cache, resolver, downloader, lockfile
- mozart-autoload: autoloader generation and PHP scanner
Refactor Console::from_cli and build_cache_config to accept primitive
args instead of &Cli to break circular dependencies. Introduce
[workspace.dependencies] for centralized version management. Remove 9
unused direct dependencies from the CLI crate.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/commands/search.rs')
| -rw-r--r-- | crates/mozart/src/commands/search.rs | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/crates/mozart/src/commands/search.rs b/crates/mozart/src/commands/search.rs index d172976..98189ff 100644 --- a/crates/mozart/src/commands/search.rs +++ b/crates/mozart/src/commands/search.rs @@ -1,5 +1,5 @@ -use crate::packagist::SearchResult; use clap::Args; +use mozart_registry::packagist::SearchResult; #[derive(Args)] pub struct SearchArgs { @@ -62,11 +62,12 @@ fn passes_only_vendor(result: &SearchResult, query: &str) -> bool { pub fn execute( args: &SearchArgs, _cli: &super::Cli, - _console: &crate::console::Console, + _console: &mozart_core::console::Console, ) -> anyhow::Result<()> { let query = args.tokens.join(" "); - let (all_results, total) = crate::packagist::search_packages(&query, args.r#type.as_deref())?; + let (all_results, total) = + mozart_registry::packagist::search_packages(&query, args.r#type.as_deref())?; // Apply client-side filters let mut results: Vec<&SearchResult> = all_results.iter().collect(); @@ -92,7 +93,7 @@ pub fn execute( if results.is_empty() { eprintln!( "{}", - crate::console::warning(&format!("No packages found for \"{query}\"")) + mozart_core::console::warning(&format!("No packages found for \"{query}\"")) ); return Ok(()); } @@ -115,9 +116,13 @@ pub fn execute( println!( "{} {} {}", - crate::console::info(&format!("{:<width$}", result.name, width = name_width)), - crate::console::comment(&dl_str), - crate::console::comment(&fav_str), + mozart_core::console::info(&format!( + "{:<width$}", + result.name, + width = name_width + )), + mozart_core::console::comment(&dl_str), + mozart_core::console::comment(&fav_str), ); if !result.description.is_empty() { println!(" {}", result.description); @@ -163,7 +168,7 @@ mod tests { #[test] fn test_parse_search_response() { - use crate::packagist::SearchResponse; + use mozart_registry::packagist::SearchResponse; let json = r#"{ "results": [ @@ -209,7 +214,7 @@ mod tests { #[test] fn test_parse_search_response_with_next() { - use crate::packagist::SearchResponse; + use mozart_registry::packagist::SearchResponse; let json = r#"{ "results": [], |
