@@ -56,6 +56,8 @@ protected function configure(): void
5656- -v: detailed blocks
5757- -vv: detailed + include no-op summaries
5858- -vvv: everything above plus full JSON plan at end
59+ Other options:
60+ - --composer-only: Only include composer-related steps; exclude split steps.
5961
6062Notes
6163- Delta notation [+added/-removed/~changed] summarizes composer map changes.
@@ -67,8 +69,7 @@ protected function configure(): void
6769 ->addOption ('project-root ' , null , InputOption::VALUE_REQUIRED , 'Project root (default: CWD). ' )
6870 ->addOption ('paths ' , null , InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY , 'Limit to specific package paths ' , [])
6971 ->addOption ('json ' , null , InputOption::VALUE_NONE , 'Output as JSON instead of human-readable. ' )
70- // --concise retained for compatibility; default output is concise
71- ->addOption ('concise ' , null , InputOption::VALUE_NONE , 'Force one-line summaries only; omit detailed blocks. ' )
72+ ->addOption ('composer-only ' , null , InputOption::VALUE_NONE , 'Only include composer-related steps; exclude split steps. ' )
7273 ->addOption ('show-all ' , null , InputOption::VALUE_NONE , 'Show no-op summaries (does not turn them into steps). ' )
7374 ->addOption ('force-split ' , null , InputOption::VALUE_NONE , 'Force split steps even if unchanged. ' )
7475 ->addOption ('verify-remote ' , null , InputOption::VALUE_NONE , 'Verify remote state if lockfile is missing/stale. ' )
@@ -83,10 +84,10 @@ protected function execute(InputInterface $input, OutputInterface $output): int
8384 /** @var list<string> $paths */
8485 $ paths = (array ) $ input ->getOption ('paths ' );
8586 $ json = (bool ) $ input ->getOption ('json ' );
87+ $ composerOnly = (bool ) $ input ->getOption ('composer-only ' );
8688 $ verbosity = $ output ->getVerbosity ();
87- $ explicitConcise = (bool ) $ input ->getOption ('concise ' );
88- // Concise by default; -v or higher switches to detailed unless --concise is given
89- $ concise = $ explicitConcise || ($ verbosity <= OutputInterface::VERBOSITY_NORMAL );
89+ // Concise by default; increase detail with -v/-vv/-vvv
90+ $ concise = ($ verbosity <= OutputInterface::VERBOSITY_NORMAL );
9091 // Show no-op summaries at -vv or when explicitly requested
9192 $ showAll = (bool ) $ input ->getOption ('show-all ' ) || ($ verbosity >= OutputInterface::VERBOSITY_VERY_VERBOSE );
9293 $ force = (bool ) $ input ->getOption ('force-split ' );
@@ -112,6 +113,22 @@ protected function execute(InputInterface $input, OutputInterface $output): int
112113 $ steps = $ result ['steps ' ] ?? [];
113114 $ noop = $ result ['noop ' ] ?? [];
114115
116+ if ($ composerOnly ) {
117+ $ composerTypes = [
118+ 'package-version-update ' ,
119+ 'package-metadata-sync ' ,
120+ 'composer-root-update ' ,
121+ 'composer-root-merge ' ,
122+ 'composer-root-rebuild ' ,
123+ ];
124+ $ steps = array_values (array_filter (
125+ $ steps ,
126+ static fn (PlanStepInterface $ s ): bool => in_array ($ s ->type (), $ composerTypes , true )
127+ ));
128+ // Suppress noop summary to avoid confusion with filtered output
129+ $ noop = [];
130+ }
131+
115132 if ($ json ) {
116133 $ payload = [
117134 'version ' => 1 ,
0 commit comments