2020namespace FastForward \DevTools \Console \Command ;
2121
2222use Composer \Command \BaseCommand ;
23- use FastForward \DevTools \Dependency \DependencyUpgradeProcessFactoryInterface ;
2423use FastForward \DevTools \Process \ProcessBuilderInterface ;
2524use FastForward \DevTools \Process \ProcessQueueInterface ;
2625use InvalidArgumentException ;
4645final class DependenciesCommand extends BaseCommand
4746{
4847 /**
49- * @param DependencyUpgradeProcessFactoryInterface $upgradeProcessFactory creates Jack and Composer upgrade processes
50- * @param ProcessBuilderInterface $processBuilder creates analyzer processes
48+ * @param ProcessBuilderInterface $processBuilder creates analyzer and upgrade processes
5149 * @param ProcessQueueInterface $processQueue executes queued processes
5250 * @param FileLocatorInterface $fileLocator resolves local composer.json
5351 */
5452 public function __construct (
55- private readonly DependencyUpgradeProcessFactoryInterface $ upgradeProcessFactory ,
5653 private readonly ProcessBuilderInterface $ processBuilder ,
5754 private readonly ProcessQueueInterface $ processQueue ,
5855 private readonly FileLocatorInterface $ fileLocator ,
@@ -73,7 +70,7 @@ protected function configure(): void
7370 default: '5 ' ,
7471 )
7572 ->addOption (
76- name: 'fix ' ,
73+ name: 'upgrade ' ,
7774 mode: InputOption::VALUE_NONE ,
7875 description: 'Apply Jack dependency upgrades before executing the dependency analyzers. ' ,
7976 )
@@ -104,17 +101,39 @@ protected function execute(InputInterface $input, OutputInterface $output): int
104101
105102 $ this ->fileLocator ->locate ('composer.json ' );
106103
107- $ fix = (bool ) $ input ->getOption ('fix ' );
104+ $ upgrade = (bool ) $ input ->getOption ('upgrade ' );
108105 $ dev = (bool ) $ input ->getOption ('dev ' );
109106
110107 $ output ->writeln (
111- $ fix
108+ $ upgrade
112109 ? '<info>Running dependency upgrade and analysis...</info> '
113110 : '<info>Running dependency dry-run upgrade preview and analysis...</info> '
114111 );
115112
116- foreach ($ this ->upgradeProcessFactory ->create ($ fix , $ dev ) as $ process ) {
117- $ this ->processQueue ->add ($ process );
113+ $ openVersionsBuilder = $ this ->processBuilder ;
114+
115+ if ($ dev ) {
116+ $ openVersionsBuilder = $ openVersionsBuilder ->withArgument ('--dev ' );
117+ }
118+
119+ $ this ->processQueue ->add (
120+ $ upgrade
121+ ? $ openVersionsBuilder ->build ('vendor/bin/jack open-versions ' )
122+ : $ openVersionsBuilder ->withArgument ('--dry-run ' )->build ('vendor/bin/jack open-versions ' )
123+ );
124+ $ this ->processQueue ->add (
125+ $ upgrade
126+ ? $ this ->processBuilder ->build ('vendor/bin/jack raise-to-installed ' )
127+ : $ this ->processBuilder ->withArgument ('--dry-run ' )->build ('vendor/bin/jack raise-to-installed ' )
128+ );
129+
130+ if ($ upgrade ) {
131+ $ this ->processQueue ->add (
132+ $ this ->processBuilder
133+ ->withArgument ('-W ' )
134+ ->withArgument ('--no-progress ' )
135+ ->build ('composer update ' )
136+ );
118137 }
119138
120139 $ this ->processQueue ->add (
0 commit comments