Skip to content

Commit 5dc308b

Browse files
committed
diagnose: print min/max php-version from config
1 parent 326efe1 commit 5dc308b

File tree

3 files changed

+35
-5
lines changed

3 files changed

+35
-5
lines changed

conf/config.neon

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2107,6 +2107,7 @@ services:
21072107
arguments:
21082108
composerAutoloaderProjectPaths: %composerAutoloaderProjectPaths%
21092109
allConfigFiles: %allConfigFiles%
2110+
configPhpVersion: %phpVersion%
21102111
autowired: false
21112112

21122113
# Error formatters

src/Diagnose/PHPStanDiagnoseExtension.php

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@
1414
use function class_exists;
1515
use function count;
1616
use function dirname;
17+
use function end;
1718
use function explode;
1819
use function implode;
1920
use function in_array;
21+
use function is_array;
2022
use function is_file;
2123
use function is_readable;
24+
use function is_string;
2225
use function sprintf;
2326
use function str_starts_with;
2427
use function strlen;
@@ -29,11 +32,13 @@ final class PHPStanDiagnoseExtension implements DiagnoseExtension
2932
{
3033

3134
/**
35+
* @param int|array{min: int, max: int}|null $configPhpVersion
3236
* @param string[] $composerAutoloaderProjectPaths
3337
* @param string [] $allConfigFiles
3438
*/
3539
public function __construct(
3640
private PhpVersion $phpVersion,
41+
private int|array|null $configPhpVersion,
3742
private FileHelper $fileHelper,
3843
private array $composerAutoloaderProjectPaths,
3944
private array $allConfigFiles,
@@ -57,11 +62,27 @@ public function print(Output $output): void
5762
));
5863
}
5964

60-
$output->writeLineFormatted(sprintf(
61-
'<info>PHP version for analysis:</info> %s (from %s)',
62-
$this->phpVersion->getVersionString(),
63-
$this->phpVersion->getSourceLabel(),
64-
));
65+
if (
66+
$this->phpVersion->getSource() === PhpVersion::SOURCE_CONFIG
67+
&& is_array($this->configPhpVersion)
68+
) {
69+
$minVersion = new PhpVersion($this->configPhpVersion['min']);
70+
$maxVersion = new PhpVersion($this->configPhpVersion['max']);
71+
72+
$output->writeLineFormatted(sprintf(
73+
'<info>PHP version for analysis:</info> %s-%s (from %s)',
74+
$minVersion->getVersionString(),
75+
$maxVersion->getVersionString(),
76+
$this->phpVersion->getSourceLabel(),
77+
));
78+
79+
} else {
80+
$output->writeLineFormatted(sprintf(
81+
'<info>PHP version for analysis:</info> %s (from %s)',
82+
$this->phpVersion->getVersionString(),
83+
$this->phpVersion->getSourceLabel(),
84+
));
85+
}
6586
$output->writeLineFormatted('');
6687

6788
$output->writeLineFormatted(sprintf(

src/Php/PhpVersion.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public function __construct(private int $versionId, private int $source = self::
2222
{
2323
}
2424

25+
/**
26+
* @return self::SOURCE_*
27+
*/
28+
public function getSource(): int
29+
{
30+
return $this->source;
31+
}
32+
2533
public function getSourceLabel(): string
2634
{
2735
switch ($this->source) {

0 commit comments

Comments
 (0)