aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-10 15:29:19 +0900
committernsfisis <nsfisis@gmail.com>2026-05-10 15:29:19 +0900
commit46845eff8d1398f35099a0ef914f77bcaf473287 (patch)
tree12c4850f1d2f438d0ba6c363fdc0e5036cd4601d /crates/mozart/src/commands.rs
parent212506c364b2342dd9e5fa789e8cff38835dfe52 (diff)
downloadphp-mozart-46845eff8d1398f35099a0ef914f77bcaf473287.tar.gz
php-mozart-46845eff8d1398f35099a0ef914f77bcaf473287.tar.zst
php-mozart-46845eff8d1398f35099a0ef914f77bcaf473287.zip
refactor(io): introduce IoInterface trait mirroring Composer IOInterface
Add an `IoInterface` trait in mozart-core::console that mirrors `\Composer\IO\IOInterface`, implement it for `Console`, and switch commands, the auditor, and the suggested-packages reporter to accept the abstracted IO (typically `Arc<Mutex<Box<dyn IoInterface>>>` at the command boundary, `&dyn IoInterface` deeper down) instead of `&Console`. The console_writeln\!/write\! macros now go through `IoInterface::verbosity()` via the lock so any implementor works.
Diffstat (limited to 'crates/mozart/src/commands.rs')
-rw-r--r--crates/mozart/src/commands.rs73
1 files changed, 38 insertions, 35 deletions
diff --git a/crates/mozart/src/commands.rs b/crates/mozart/src/commands.rs
index d0139d5..b062fdf 100644
--- a/crates/mozart/src/commands.rs
+++ b/crates/mozart/src/commands.rs
@@ -1,3 +1,5 @@
+use mozart_core::console::IoInterface;
+
pub mod about;
pub mod archive;
pub mod audit;
@@ -271,6 +273,9 @@ pub async fn execute(cli: &Cli) -> anyhow::Result<()> {
cli.no_ansi,
cli.no_interaction,
);
+ let io = std::sync::Arc::new(std::sync::Mutex::new(
+ Box::new(console) as Box<dyn IoInterface>
+ ));
// Initialize HTTPS root certificates from `config.cafile` / `config.capath`
// before any command makes a network request.
@@ -279,41 +284,39 @@ pub async fn execute(cli: &Cli) -> anyhow::Result<()> {
let command = cli.command.as_ref().expect("command must be set");
match command {
- Commands::About(args) => about::execute(args, cli, &console).await,
- Commands::Archive(args) => archive::execute(args, cli, &console).await,
- Commands::Audit(args) => audit::execute(args, cli, &console).await,
- Commands::Browse(args) => browse::execute(args, cli, &console).await,
- Commands::Bump(args) => bump::execute(args, cli, &console).await,
- Commands::CheckPlatformReqs(args) => {
- check_platform_reqs::execute(args, cli, &console).await
- }
- Commands::ClearCache(args) => clear_cache::execute(args, cli, &console).await,
- Commands::Completion(args) => completion::execute(args, cli, &console).await,
- Commands::Config(args) => config::execute(args, cli, &console).await,
- Commands::CreateProject(args) => create_project::execute(args, cli, &console).await,
- Commands::Depends(args) => depends::execute(args, cli, &console).await,
- Commands::Diagnose(args) => diagnose::execute(args, cli, &console).await,
- Commands::DumpAutoload(args) => dump_autoload::execute(args, cli, &console).await,
- Commands::Exec(args) => exec::execute(args, cli, &console).await,
- Commands::Fund(args) => fund::execute(args, cli, &console).await,
- Commands::Global(args) => global::execute(args, cli, &console).await,
- Commands::Init(args) => init::execute(args, cli, &console).await,
- Commands::Install(args) => install::execute(args, cli, &console).await,
- Commands::Licenses(args) => licenses::execute(args, cli, &console).await,
- Commands::Outdated(args) => outdated::execute(args, cli, &console).await,
- Commands::Prohibits(args) => prohibits::execute(args, cli, &console).await,
- Commands::Reinstall(args) => reinstall::execute(args, cli, &console).await,
- Commands::Remove(args) => remove::execute(args, cli, &console).await,
- Commands::Repository(args) => repository::execute(args, cli, &console).await,
- Commands::Require(args) => require::execute(args, cli, &console).await,
- Commands::RunScript(args) => run_script::execute(args, cli, &console).await,
- Commands::Search(args) => search::execute(args, cli, &console).await,
- Commands::SelfUpdate(args) => self_update::execute(args, cli, &console).await,
- Commands::Show(args) => show::execute(args, cli, &console).await,
- Commands::Status(args) => status::execute(args, cli, &console).await,
- Commands::Suggests(args) => suggests::execute(args, cli, &console).await,
- Commands::Update(args) => update::execute(args, cli, &console).await,
- Commands::Validate(args) => validate::execute(args, cli, &console).await,
+ Commands::About(args) => about::execute(args, cli, io).await,
+ Commands::Archive(args) => archive::execute(args, cli, io).await,
+ Commands::Audit(args) => audit::execute(args, cli, io).await,
+ Commands::Browse(args) => browse::execute(args, cli, io).await,
+ Commands::Bump(args) => bump::execute(args, cli, io).await,
+ Commands::CheckPlatformReqs(args) => check_platform_reqs::execute(args, cli, io).await,
+ Commands::ClearCache(args) => clear_cache::execute(args, cli, io).await,
+ Commands::Completion(args) => completion::execute(args, cli, io).await,
+ Commands::Config(args) => config::execute(args, cli, io).await,
+ Commands::CreateProject(args) => create_project::execute(args, cli, io).await,
+ Commands::Depends(args) => depends::execute(args, cli, io).await,
+ Commands::Diagnose(args) => diagnose::execute(args, cli, io).await,
+ Commands::DumpAutoload(args) => dump_autoload::execute(args, cli, io).await,
+ Commands::Exec(args) => exec::execute(args, cli, io).await,
+ Commands::Fund(args) => fund::execute(args, cli, io).await,
+ Commands::Global(args) => global::execute(args, cli, io).await,
+ Commands::Init(args) => init::execute(args, cli, io).await,
+ Commands::Install(args) => install::execute(args, cli, io).await,
+ Commands::Licenses(args) => licenses::execute(args, cli, io).await,
+ Commands::Outdated(args) => outdated::execute(args, cli, io).await,
+ Commands::Prohibits(args) => prohibits::execute(args, cli, io).await,
+ Commands::Reinstall(args) => reinstall::execute(args, cli, io).await,
+ Commands::Remove(args) => remove::execute(args, cli, io).await,
+ Commands::Repository(args) => repository::execute(args, cli, io).await,
+ Commands::Require(args) => require::execute(args, cli, io).await,
+ Commands::RunScript(args) => run_script::execute(args, cli, io).await,
+ Commands::Search(args) => search::execute(args, cli, io).await,
+ Commands::SelfUpdate(args) => self_update::execute(args, cli, io).await,
+ Commands::Show(args) => show::execute(args, cli, io).await,
+ Commands::Status(args) => status::execute(args, cli, io).await,
+ Commands::Suggests(args) => suggests::execute(args, cli, io).await,
+ Commands::Update(args) => update::execute(args, cli, io).await,
+ Commands::Validate(args) => validate::execute(args, cli, io).await,
}
}