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

LocateComposerPackageDirectDependenciesSourceFiles   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1
Metric Value
wmc 3
lcom 0
cbo 1
dl 0
loc 22
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 19 3
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