Loader   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 58
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A loadFromPackagesRepository() 0 18 1
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerPatches\Patch\DefinitionList;
7
8
use Composer\Repository\WritableRepositoryInterface as PackageRepository;
9
10
use Vaimo\ComposerPatches\Interfaces\DefinitionListLoaderComponentInterface as ListLoader;
11
12
class Loader
13
{
14
    /**
15
     * @var \Vaimo\ComposerPatches\Package\Collector
16
     */
17
    private $packagesCollector;
18
19
    /**
20
     * @var \Vaimo\ComposerPatches\Patch\Collector
21
     */
22
    private $patchesCollector;
23
24
    /**
25
     * @var \Vaimo\ComposerPatches\Patch\SourcesResolver
26
     */
27
    private $sourcesResolver;
28
29
    /**
30
     * @var ListLoader[]
31
     */
32
    private $listLoaders;
33
34
    /**
35
     * @param \Vaimo\ComposerPatches\Package\Collector $packagesCollector
36
     * @param \Vaimo\ComposerPatches\Patch\Collector $patchesCollector
37
     * @param \Vaimo\ComposerPatches\Patch\SourcesResolver $sourcesResolver
38
     * @param ListLoader[] $listLoaders
39
     */
40
    public function __construct(
41
        \Vaimo\ComposerPatches\Package\Collector $packagesCollector,
42
        \Vaimo\ComposerPatches\Patch\Collector $patchesCollector,
43
        \Vaimo\ComposerPatches\Patch\SourcesResolver $sourcesResolver,
44
        array $listLoaders
45
    ) {
46
        $this->packagesCollector = $packagesCollector;
47
        $this->patchesCollector = $patchesCollector;
48
        $this->sourcesResolver = $sourcesResolver;
49
        $this->listLoaders = $listLoaders;
50
    }
51
52
    public function loadFromPackagesRepository(PackageRepository $repository)
53
    {
54
        $packages = $this->packagesCollector->collect($repository);
55
        $sources = $this->sourcesResolver->resolvePackages($repository);
56
57
        $patches = $this->patchesCollector->collect($sources);
58
59
        $processedPatches = array_reduce(
60
            $this->listLoaders,
61
            function (array $patches, ListLoader $listLoader) use ($packages) {
62
                return $listLoader->process($patches, $packages);
63
            },
64
            $patches
65
        );
66
67
        return array_replace(
68
            array_fill_keys(array_keys($packages), array()),
69
            $processedPatches
70
        );
71
    }
72
}
73