Failed Conditions
Pull Request — master (#153)
by Matthias
05:03
created

DefinedExtensionsResolver::__invoke()   A

Complexity

Conditions 6
Paths 5

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 6.0163

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 12
c 2
b 0
f 0
dl 0
loc 19
ccs 12
cts 13
cp 0.9231
rs 9.2222
cc 6
nc 5
nop 2
crap 6.0163
1
<?php
2
3
namespace ComposerRequireChecker\DefinedExtensionsResolver;
4
5
class DefinedExtensionsResolver
6
{
7 7
    public function __invoke(string $composerJson, array $phpCoreExtensions = []): array
8
    {
9 7
        $composerJsonContent = file_get_contents($composerJson);
10 7
        if ($composerJsonContent === false) {
11
            throw new \InvalidArgumentException('could not load file [' . $composerJson . ']');
12
        }
13 7
        $requires = json_decode($composerJsonContent, true)['require'] ?? [];
14
15 7
        $extensions = [];
16 7
        foreach ($requires as $require => $version) {
17 6
            if ($require == 'php' || $require == 'php-64bit') {
18 5
                $extensions = array_merge($extensions, $phpCoreExtensions);
19 5
                continue;
20
            }
21 4
            if (strpos($require, 'ext-') === 0) {
22 4
                $extensions = array_merge($extensions, [substr($require, 4)]);
23
            }
24
        }
25 7
        return $extensions;
26
    }
27
}
28