Completed
Push — master ( 961aa4...4462c2 )
by Matthias
03:43
created

__invoke()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 19
Code Lines 10

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 19
rs 9.4286
cc 3
eloc 10
nc 3
nop 1
1
<?php
2
3
namespace ComposerRequireChecker\FileLocator;
4
5
use Generator;
6
7
final class LocateComposerPackageDirectDependenciesSourceFiles
8
{
9
    public function __invoke(string $composerJsonPath) : Generator
10
    {
11
        $packageDir = dirname($composerJsonPath);
12
13
        $vendorDirs = array_values(array_map(
14
            function (string $vendorName) use ($packageDir) {
15
                return $packageDir . '/vendor/' . $vendorName;
16
            },
17
            array_keys(json_decode(file_get_contents($composerJsonPath), true)['require'] ?? [])
18
        ));
19
20
        foreach ($vendorDirs as $vendorDir) {
21
            if (! file_exists($vendorDir . '/composer.json')) {
22
                continue;
23
            }
24
25
            yield from (new LocateComposerPackageSourceFiles())->__invoke($vendorDir . '/composer.json');
26
        }
27
    }
28
}
29