diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-21 23:38:32 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-21 23:38:32 +0900 |
| commit | 52310761f67220c9c075cd847205825a720035ee (patch) | |
| tree | 0528fc94aea7853e41313e19964d74a958dae9c9 /crates/mozart/src/commands/clear_cache.rs | |
| parent | 92da9e37c68beb180e45e550fba5acd7d28dca27 (diff) | |
| download | php-mozart-52310761f67220c9c075cd847205825a720035ee.tar.gz php-mozart-52310761f67220c9c075cd847205825a720035ee.tar.zst php-mozart-52310761f67220c9c075cd847205825a720035ee.zip | |
feat(console): add structured error handling, verbosity, and suggestions
Implement Phase 7.2 error handling & UX infrastructure:
- Add exit_code module with MozartError, bail()/bail_silent() helpers,
and Composer-compatible exit code constants (0-5, 100)
- Redesign Console struct with Verbosity enum (Quiet/Normal/Verbose/
VeryVerbose/Debug), ANSI auto-detection via IsTerminal, and
verbosity-gated output methods (info/verbose/debug/error)
- Thread Console through all 33 command execute() signatures
- Replace all std::process::exit() calls with structured MozartError
returns handled in main()
- Migrate eprintln\! status messages to console.info() for quiet-mode
suppression
- Add suggest module with Levenshtein distance and "Did you mean?"
formatting for future package name suggestions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/commands/clear_cache.rs')
| -rw-r--r-- | crates/mozart/src/commands/clear_cache.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/mozart/src/commands/clear_cache.rs b/crates/mozart/src/commands/clear_cache.rs index 819ca9f..59baff3 100644 --- a/crates/mozart/src/commands/clear_cache.rs +++ b/crates/mozart/src/commands/clear_cache.rs @@ -8,7 +8,11 @@ pub struct ClearCacheArgs { pub gc: bool, } -pub fn execute(args: &ClearCacheArgs, cli: &super::Cli) -> anyhow::Result<()> { +pub fn execute( + args: &ClearCacheArgs, + cli: &super::Cli, + console: &crate::console::Console, +) -> anyhow::Result<()> { let config = build_cache_config(cli); if args.gc { @@ -19,8 +23,8 @@ pub fn execute(args: &ClearCacheArgs, cli: &super::Cli) -> anyhow::Result<()> { repo_cache.gc(config.cache_ttl, u64::MAX)?; files_cache.gc(config.cache_files_ttl, config.cache_files_maxsize)?; - eprintln!("Cache garbage collection complete."); - eprintln!("Cache directory: {}", config.cache_dir.display()); + console.info("Cache garbage collection complete."); + console.info(&format!("Cache directory: {}", config.cache_dir.display())); } else { // Full clear of all cache directories let repo_cache = Cache::repo(&config); @@ -44,8 +48,8 @@ pub fn execute(args: &ClearCacheArgs, cli: &super::Cli) -> anyhow::Result<()> { } } - eprintln!("Cache cleared."); - eprintln!("Cache directory: {}", config.cache_dir.display()); + console.info("Cache cleared."); + console.info(&format!("Cache directory: {}", config.cache_dir.display())); } Ok(()) |
