aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/depends.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-05 12:50:43 +0900
committernsfisis <nsfisis@gmail.com>2026-05-05 12:55:09 +0900
commit78a627f9b839e902faec6e5f7fee4ec19fc0e4b8 (patch)
tree9438a91dc70e87ce78091377f571316ecf1a2a7b /crates/mozart/src/commands/depends.rs
parenta55ad1cc44c12836eca5652d231902968e04eea1 (diff)
downloadphp-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.rs67
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,
+ },
+ )
}