Passed
Push — master ( 5b8d1d...9f8b1b )
by Jakub
01:30
created

ComposerBinPluginCommandFactory::import()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Zalas\Toolbox\Json\Factory;
4
5
use Zalas\Toolbox\Tool\Collection;
6
use Zalas\Toolbox\Tool\Command;
7
use Zalas\Toolbox\Tool\Command\ComposerBinPluginCommand;
8
use Zalas\Toolbox\Tool\Command\ComposerBinPluginLinkCommand;
9
10
final class ComposerBinPluginCommandFactory
11
{
12 10
    public static function import(array $command): Command
13
    {
14 10
        Assert::requireFields(['package', 'namespace'], $command, 'ComposerBinPluginCommand');
15
16 8
        return new ComposerBinPluginCommand($command['package'], $command['namespace'], self::importLinks($command));
17
    }
18
19 8
    private static function importLinks(array $command): Collection
20
    {
21 8
        $links = $command['links'] ?? [];
22 8
        $namespace = $command['namespace'];
23
24 8
        return Collection::create(
25
            \array_map(function (string $source, string $target) use ($namespace) {
26 1
                return new ComposerBinPluginLinkCommand($source, $target, $namespace);
27 8
            }, \array_values($links), \array_keys($links))
28
        );
29
    }
30
}
31