aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/commands/clear_cache.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/clear_cache.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/clear_cache.rs')
-rw-r--r--crates/mozart/src/commands/clear_cache.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/crates/mozart/src/commands/clear_cache.rs b/crates/mozart/src/commands/clear_cache.rs
index 6a601da..dbca5c8 100644
--- a/crates/mozart/src/commands/clear_cache.rs
+++ b/crates/mozart/src/commands/clear_cache.rs
@@ -1,10 +1,10 @@
-use std::{borrow::Cow, path::Path};
-
use crate::composer::Composer;
use clap::Args;
+use mozart_core::console::IoInterface;
use mozart_core::console_writeln_error;
use mozart_core::factory::create_config;
use mozart_core::repository::cache::Cache;
+use std::{borrow::Cow, path::Path};
#[derive(Args)]
pub struct ClearCacheArgs {
@@ -16,7 +16,7 @@ pub struct ClearCacheArgs {
pub async fn execute(
args: &ClearCacheArgs,
cli: &super::Cli,
- console: &mozart_core::console::Console,
+ io: std::sync::Arc<std::sync::Mutex<Box<dyn IoInterface>>>,
) -> anyhow::Result<()> {
let composer = Composer::try_load(cli.working_dir()?)?;
let config = if let Some(composer) = &composer {
@@ -42,7 +42,7 @@ pub async fn execute(
if !path.exists() {
console_writeln_error!(
- console,
+ io,
"<info>Cache directory does not exist ({key}): {}</info>",
path.display(),
);
@@ -52,7 +52,7 @@ pub async fn execute(
let cache = Cache::new(path.to_owned(), config.cache_read_only);
if !cache.is_enabled() {
console_writeln_error!(
- console,
+ io,
"<info>Cache is not enabled ({key}): {}</info>",
path.display(),
);
@@ -61,7 +61,7 @@ pub async fn execute(
if args.gc {
console_writeln_error!(
- console,
+ io,
"<info>Garbage-collecting cache ({key}): {}</info>",
path.display(),
);
@@ -73,7 +73,7 @@ pub async fn execute(
};
} else {
console_writeln_error!(
- console,
+ io,
"<info>Clearing cache ({key}): {}</info>",
path.display(),
);
@@ -82,9 +82,9 @@ pub async fn execute(
}
if args.gc {
- console_writeln_error!(console, "<info>All caches garbage-collected.</info>");
+ console_writeln_error!(io, "<info>All caches garbage-collected.</info>");
} else {
- console_writeln_error!(console, "<info>All caches cleared.</info>");
+ console_writeln_error!(io, "<info>All caches cleared.</info>");
}
Ok(())