aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/search.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
committernsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
commit0a8e5935e6305819bb02d8c69e2f046ff397913a (patch)
treee5a288e679477b1603d7989e986ca22bbe590aa4 /crates/mozart/src/commands/search.rs
parentb5af594fec7da72b15c9a202c641af0494db6355 (diff)
downloadphp-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.rs23
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": [],