Passed
Branch master (3e058b)
by Allan
02:59
created

ConfigResolverFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 18
dl 0
loc 58
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A create() 0 16 1
A createInfoExtractor() 0 7 2
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerChangelogs\Factories\Changelog;
7
8
use Vaimo\ComposerChangelogs\Extractors;
9
10
class ConfigResolverFactory
11
{
12
    /**
13
     * @var \Composer\Composer
14
     */
15
    private $composerRuntime;
16
17
    /**
18
     * @var
19
     */
20
    private $packageResolver;
21
22
    /**
23
     * @param \Composer\Composer $composerRuntime
24
     */
25
    public function __construct(
26
        \Composer\Composer $composerRuntime
27
    ) {
28
        $this->composerRuntime = $composerRuntime;
29
        
30
        $this->packageResolver = new \Vaimo\ComposerChangelogs\Resolvers\PluginPackageResolver(
31
            array($this->composerRuntime->getPackage())
32
        );
33
    }
34
35
    /**
36
     * @SuppressWarnings(PHPMD.BooleanArgumentFlag)
37
     *
38
     * @param bool $fromSource
39
     * @return \Vaimo\ComposerChangelogs\Resolvers\ChangelogConfigResolver
40
     * @throws \Exception
41
     */
42
    public function create($fromSource = false)
43
    {
44
        $packageRepository = $this->composerRuntime->getRepositoryManager()->getLocalRepository();
45
        
46
        $pluginPackage = $this->packageResolver->resolveForNamespace($packageRepository, __NAMESPACE__);
47
        
48
        $packageInfoResolver = new \Vaimo\ComposerChangelogs\Resolvers\PackageInfoResolver(
49
            $this->composerRuntime->getInstallationManager()
50
        );
51
52
        $infoExtractor = $this->createInfoExtractor($packageInfoResolver, $fromSource);
53
        
54
        return new \Vaimo\ComposerChangelogs\Resolvers\ChangelogConfigResolver(
55
            $pluginPackage,
56
            $packageInfoResolver,
57
            $infoExtractor
58
        );
59
    }
60
    
61
    private function createInfoExtractor($packageInfoResolver, $fromSource)
62
    {
63
        if ($fromSource) {
64
            return new Extractors\VendorConfigExtractor($packageInfoResolver);
65
        }
66
67
        return new Extractors\InstalledConfigExtractor();
68
    }
69
}
70