aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/console.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
committernsfisis <nsfisis@gmail.com>2026-02-22 00:37:54 +0900
commit0a8e5935e6305819bb02d8c69e2f046ff397913a (patch)
treee5a288e679477b1603d7989e986ca22bbe590aa4 /crates/mozart/src/console.rs
parentb5af594fec7da72b15c9a202c641af0494db6355 (diff)
downloadphp-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.gz
php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.tar.zst
php-mozart-0a8e5935e6305819bb02d8c69e2f046ff397913a.zip
refactor(workspace): split monolithic crate into 6 workspace crates
Extract modules from the single `mozart` crate into 5 focused library crates to improve compilation parallelism and architectural clarity: - mozart-constraint: version constraint parser (independent) - mozart-core: base types, console, validation, platform utilities - mozart-archiver: archive creation (tar, zip, bzip2) - mozart-registry: Packagist API, cache, resolver, downloader, lockfile - mozart-autoload: autoloader generation and PHP scanner Refactor Console::from_cli and build_cache_config to accept primitive args instead of &Cli to break circular dependencies. Introduce [workspace.dependencies] for centralized version management. Remove 9 unused direct dependencies from the CLI crate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'crates/mozart/src/console.rs')
-rw-r--r--crates/mozart/src/console.rs19
1 files changed, 11 insertions, 8 deletions
diff --git a/crates/mozart/src/console.rs b/crates/mozart/src/console.rs
index 5f108c0..e37ff23 100644
--- a/crates/mozart/src/console.rs
+++ b/crates/mozart/src/console.rs
@@ -94,17 +94,20 @@ pub struct Console {
}
impl Console {
- /// Build a `Console` from the parsed CLI.
+ /// Build a `Console` from primitive arguments.
///
- /// This is the primary constructor used in production. It reads
- /// `cli.verbose`, `cli.quiet`, `cli.ansi`, `cli.no_ansi`, and
- /// `cli.no_interaction` to configure all fields.
- pub fn from_cli(cli: &crate::commands::Cli) -> Self {
- let verbosity = Verbosity::from_flags(cli.verbose, cli.quiet);
- let decorated = Self::resolve_decorated(cli.ansi, cli.no_ansi);
+ /// This is the primary constructor. Pass the relevant CLI flag values:
+ /// - `verbose`: the `-v` flag count (0, 1, 2, 3+)
+ /// - `quiet`: whether `--quiet` was passed
+ /// - `ansi`: whether `--ansi` was passed
+ /// - `no_ansi`: whether `--no-ansi` was passed
+ /// - `no_interaction`: whether `--no-interaction` / `-n` was passed
+ pub fn new(verbose: u8, quiet: bool, ansi: bool, no_ansi: bool, no_interaction: bool) -> Self {
+ let verbosity = Verbosity::from_flags(verbose, quiet);
+ let decorated = Self::resolve_decorated(ansi, no_ansi);
colored::control::set_override(decorated);
Self {
- interactive: !cli.no_interaction,
+ interactive: !no_interaction,
verbosity,
decorated,
}