diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-05 12:50:43 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-05 12:55:09 +0900 |
| commit | 78a627f9b839e902faec6e5f7fee4ec19fc0e4b8 (patch) | |
| tree | 9438a91dc70e87ce78091377f571316ecf1a2a7b /crates/mozart/src/commands/depends.rs | |
| parent | a55ad1cc44c12836eca5652d231902968e04eea1 (diff) | |
| download | php-mozart-78a627f9b839e902faec6e5f7fee4ec19fc0e4b8.tar.gz php-mozart-78a627f9b839e902faec6e5f7fee4ec19fc0e4b8.tar.zst php-mozart-78a627f9b839e902faec6e5f7fee4ec19fc0e4b8.zip | |
refactor(depends): share execution path with prohibits via do_execute
Mirror composer's BaseDependencyCommand::doExecute by collapsing the
duplicated working-dir/load/lookup/print pipeline in depends.rs and
prohibits.rs into a single dependency::do_execute helper driven by an
`inverted` flag. The clap arg structs stay in their per-command modules
and just forward to the shared entry point.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/commands/depends.rs')
| -rw-r--r-- | crates/mozart/src/commands/depends.rs | 67 |
1 files changed, 12 insertions, 55 deletions
diff --git a/crates/mozart/src/commands/depends.rs b/crates/mozart/src/commands/depends.rs index 514ce11..9324b82 100644 --- a/crates/mozart/src/commands/depends.rs +++ b/crates/mozart/src/commands/depends.rs @@ -1,5 +1,4 @@ use clap::Args; -use std::path::PathBuf; #[derive(Args)] pub struct DependsArgs { @@ -24,58 +23,16 @@ pub async fn execute( cli: &super::Cli, console: &mozart_core::console::Console, ) -> anyhow::Result<()> { - let working_dir = match &cli.working_dir { - Some(dir) => PathBuf::from(dir), - None => std::env::current_dir()?, - }; - - let packages = super::dependency::load_packages(&working_dir, args.locked)?; - - if packages.is_empty() { - console.write_error( - "No dependencies installed. Try running mozart install or update, or use --locked.", - ); - return Err(mozart_core::exit_code::bail_silent( - mozart_core::exit_code::GENERAL_ERROR, - )); - } - - let target = args.package.to_lowercase(); - - // Verify the target package is known - let target_known = packages.iter().any(|p| p.name.to_lowercase() == target); - if !target_known && mozart_core::platform::is_platform_package(&target) { - anyhow::bail!( - "Could not find platform package \"{}\". Is PHP available?", - args.package - ); - } - if !target_known { - anyhow::bail!( - "Could not find package \"{}\" in your project", - args.package - ); - } - - let recursive = args.tree || args.recursive; - let needles = vec![target]; - let results = super::dependency::get_dependents(&packages, &needles, None, false, recursive)?; - - if results.is_empty() { - console.info(&format!( - "There is no installed package depending on \"{}\"", - args.package - )); - return Err(mozart_core::exit_code::bail_silent( - mozart_core::exit_code::GENERAL_ERROR, - )); - } - - if args.tree { - super::dependency::print_tree(&results, 0, console); - } else { - super::dependency::print_table(&results, console); - } - - Ok(()) + super::dependency::do_execute( + cli, + console, + super::dependency::DoExecuteArgs { + package: &args.package, + version: None, + recursive: args.recursive, + tree: args.tree, + locked: args.locked, + inverted: false, + }, + ) } |
