Passed
Push — master ( 02bb3c...4fd274 )
by Dominik
13:26 queued 10:49
created

DependencyLoader   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 72.72%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 9
c 1
b 0
f 0
dl 0
loc 31
ccs 8
cts 11
cp 0.7272
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A runComposerLicenseCommand() 0 5 1
A loadDependencies() 0 5 1
A exec() 0 5 1
A __construct() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Dominikb\ComposerLicenseChecker;
6
7
use Dominikb\ComposerLicenseChecker\Contracts\DependencyLoader as DependencyLoaderContract;
8
use Dominikb\ComposerLicenseChecker\Contracts\DependencyParser;
9
10
class DependencyLoader implements DependencyLoaderContract
11
{
12
    /**
13
     * @var DependencyParser
14
     */
15
    private $dependencyParser;
16
17 1
    public function __construct(DependencyParser $dependencyParser)
18
    {
19 1
        $this->dependencyParser = $dependencyParser;
20
    }
21
22 1
    public function loadDependencies(string $composer, string $project): array
23
    {
24 1
        $commandOutput = $this->runComposerLicenseCommand($composer, $project);
25
26 1
        return $this->dependencyParser->parse(join(PHP_EOL, $commandOutput));
27
    }
28
29 1
    private function runComposerLicenseCommand(string $composer, string $project, string $format = 'json'): array
30
    {
31 1
        $command = sprintf('%s licenses -f %s -d %s', $composer, $format, $project);
32
33 1
        return $this->exec($command);
34
    }
35
36
    protected function exec(string $command)
37
    {
38
        exec($command, $output);
39
40
        return $output;
41
    }
42
}
43