3 declare(strict_types = 1);
17 require __DIR__ .
'/../../vendor/autoload.php';
19 if (PHP_SAPI !==
'cli') {
20 die(
'Script must be called from command line.' . chr(10));
50 $output = new \Symfony\Component\Console\Output\ConsoleOutput();
52 $resultAcrossAllFiles = 0;
54 foreach ($filesToProcess as $composerJsonFile) {
55 $fullFilePath = $composerJsonFile->getRealPath();
58 if (!empty($this->testResults)) {
59 $table = new \Symfony\Component\Console\Helper\Table(
$output);
67 foreach ($this->testResults as $extKey => $results) {
68 foreach ($results as $result) {
72 $result[
'dependency'],
79 $resultAcrossAllFiles = 1;
81 return $resultAcrossAllFiles;
91 $finder =
new Symfony\Component\Finder\Finder();
94 ->in(__DIR__ .
'/../../typo3/sysext/*')
95 ->name(
'composer.json');
96 return $composerFiles;
108 $extensionComposerJson = json_decode(file_get_contents($composerJsonFile),
true);
110 foreach ($this->rootComposerJson[
'require'] as $requireKey => $requireItem) {
111 if (isset($extensionComposerJson[
'require'][$requireKey]) && $extensionComposerJson[
'require'][$requireKey] !== $requireItem) {
113 $this->testResults[$extensionKey][] = [
115 'dependency' => $requireKey,
116 'shouldBe' => $requireItem,
117 'actuallyIs' => $extensionComposerJson[
'require'][$requireKey]
122 foreach ($this->rootComposerJson[
'require-dev'] as $requireDevKey => $requireDevItem) {
123 if (isset($extensionComposerJson[
'require-dev'][$requireDevKey]) && $extensionComposerJson[
'require-dev'][$requireDevKey] !== $requireDevItem) {
125 $this->testResults[$extensionKey][] = [
126 'type' =>
'require-dev',
127 'dependency' => $requireDevKey,
128 'shouldBe' => $requireDevItem,
129 'actuallyIs' => $extensionComposerJson[
'require-dev'][$requireDevKey]
143 $pattern =
'/typo3\/sysext\/(?<extName>[a-z].+?)\//';
144 preg_match_all($pattern, $filename, $matches, PREG_SET_ORDER, 0);
145 return $matches[0][
'extName'];