Skip to content

Commit ebf021f

Browse files
committed
[dependencies] Inline Jack upgrade workflow (#34)
1 parent db6ef18 commit ebf021f

9 files changed

Lines changed: 120 additions & 223 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ composer dependencies
5555
vendor/bin/dev-tools dependencies
5656
composer dev-tools dependencies -- --max-outdated=8
5757
composer dev-tools dependencies -- --dev
58-
composer dev-tools dependencies -- --fix --dev
58+
composer dev-tools dependencies -- --upgrade --dev
5959

6060
# Analyze code metrics with PhpMetrics
6161
composer metrics

docs/commands/dependencies.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ Options
3838

3939
Default: ``5``.
4040

41-
``--fix`` (optional)
41+
``--upgrade`` (optional)
4242
Applies the Jack upgrade workflow before the analyzers:
4343

4444
- ``vendor/bin/jack open-versions``
4545
- ``vendor/bin/jack raise-to-installed``
4646
- ``composer update -W``
4747

48-
Without ``--fix``, the command runs the Jack workflow in preview mode
48+
Without ``--upgrade``, the command runs the Jack workflow in preview mode
4949
before the analyzers.
5050

5151
``--dev`` (optional)
@@ -76,7 +76,7 @@ Apply the upgrade workflow and then analyze dependencies:
7676

7777
.. code-block:: bash
7878
79-
composer dev-tools dependencies -- --fix --dev
79+
composer dev-tools dependencies -- --upgrade --dev
8080
8181
Using the alias:
8282

@@ -108,7 +108,7 @@ Behavior
108108
- ``jack breakpoint`` maps ``--max-outdated`` to Jack's ``--limit`` option.
109109
- It always previews Jack's ``open-versions`` and ``raise-to-installed``
110110
commands before the analyzers.
111-
- ``--fix`` applies Jack's ``open-versions`` and ``raise-to-installed``
111+
- ``--upgrade`` applies Jack's ``open-versions`` and ``raise-to-installed``
112112
commands before ``composer update -W``.
113113
- Returns a non-zero exit code when missing, unused, or too many outdated
114114
dependencies are found.

docs/running/specialized-commands.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Analyzes missing and unused Composer dependencies.
3333
composer dependencies
3434
composer dev-tools dependencies -- --max-outdated=10
3535
composer dev-tools dependencies -- --dev
36-
composer dev-tools dependencies -- --fix --dev
36+
composer dev-tools dependencies -- --upgrade --dev
3737
3838
Important details:
3939

@@ -46,7 +46,7 @@ Important details:
4646
outdated dependencies accumulate;
4747
- it previews ``jack open-versions`` and ``jack raise-to-installed`` before
4848
the analyzers;
49-
- ``--fix`` runs ``jack open-versions``, ``jack raise-to-installed``, and
49+
- ``--upgrade`` runs ``jack open-versions``, ``jack raise-to-installed``, and
5050
``composer update -W`` before the analyzers;
5151
- it returns a non-zero exit code when missing, unused, or too many outdated
5252
dependencies are found.

src/Console/Command/DependenciesCommand.php

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
namespace FastForward\DevTools\Console\Command;
2121

2222
use Composer\Command\BaseCommand;
23-
use FastForward\DevTools\Dependency\DependencyUpgradeProcessFactoryInterface;
2423
use FastForward\DevTools\Process\ProcessBuilderInterface;
2524
use FastForward\DevTools\Process\ProcessQueueInterface;
2625
use InvalidArgumentException;
@@ -46,13 +45,11 @@
4645
final 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(

src/Dependency/DependencyUpgradeProcessFactory.php

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/Dependency/DependencyUpgradeProcessFactoryInterface.php

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/ServiceProvider/DevToolsServiceProvider.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@
2424
use FastForward\DevTools\Composer\Json\ComposerJson;
2525
use FastForward\DevTools\Composer\Json\ComposerJsonInterface;
2626
use FastForward\DevTools\Console\CommandLoader\DevToolsCommandLoader;
27-
use FastForward\DevTools\Dependency\DependencyUpgradeProcessFactory;
28-
use FastForward\DevTools\Dependency\DependencyUpgradeProcessFactoryInterface;
2927
use FastForward\DevTools\Filesystem\FinderFactory;
3028
use FastForward\DevTools\Filesystem\FinderFactoryInterface;
3129
use FastForward\DevTools\Filesystem\Filesystem;
@@ -97,10 +95,6 @@ public function getFactories(): array
9795

9896
// Composer
9997
ComposerJsonInterface::class => get(ComposerJson::class),
100-
101-
// Dependency workflows
102-
DependencyUpgradeProcessFactoryInterface::class => get(DependencyUpgradeProcessFactory::class),
103-
10498
// Symfony Components
10599
FileLocatorInterface::class => create(FileLocator::class)->constructor([getcwd(), \dirname(__DIR__, 2)]),
106100

0 commit comments

Comments
 (0)