Completed
Push — master ( 3fd618...834a40 )
by Allan
02:37
created

VendorConfigExtractor::getPackageFullConfig()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
c 0
b 0
f 0
dl 0
loc 12
rs 10
cc 2
nc 2
nop 1
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerChangelogs\Extractors;
7
8
use Composer\Package\PackageInterface as Package;
9
10
use Vaimo\ComposerChangelogs\Composer\Config as ComposerConfig;
11
12
class VendorConfigExtractor implements \Vaimo\ComposerChangelogs\Interfaces\PackageConfigExtractorInterface
13
{
14
    /**
15
     * @var \Vaimo\ComposerChangelogs\Resolvers\PackageInfoResolver
16
     */
17
    private $packageInfoResolver;
18
19
    /**
20
     * @var \Vaimo\ComposerChangelogs\Readers\JsonFileReader
21
     */
22
    private $configLoader;
23
24
    /**
25
     * @var \Vaimo\ComposerChangelogs\Utils\PathUtils
26
     */
27
    private $pathUtils;
28
29
    /**
30
     * @param \Vaimo\ComposerChangelogs\Resolvers\PackageInfoResolver $packageInfoResolver
31
     */
32
    public function __construct(
33
        \Vaimo\ComposerChangelogs\Resolvers\PackageInfoResolver $packageInfoResolver
34
    ) {
35
        $this->packageInfoResolver = $packageInfoResolver;
36
37
        $this->configLoader = new \Vaimo\ComposerChangelogs\Readers\JsonFileReader();
38
        $this->pathUtils = new \Vaimo\ComposerChangelogs\Utils\PathUtils();
39
    }
40
41
    public function getConfig(Package $package)
42
    {
43
        $packageConfig = $this->getPackageFullConfig($package);
44
        
45
        if (!$packageConfig) {
46
            return array();
47
        }
48
49
        if (!isset($packageConfig[ComposerConfig::CONFIG_ROOT])) {
50
            return array();
51
        }
52
53
        return $packageConfig[ComposerConfig::CONFIG_ROOT];
54
    }
55
    
56
    public function getPackageFullConfig(Package $package)
57
    {
58
        $source = $this->pathUtils->composePath(
59
            $this->packageInfoResolver->getInstallPath($package),
60
            \Vaimo\ComposerChangelogs\Composer\Files::PACKAGE_CONFIG
61
        );
62
63
        if (file_exists($source)) {
64
            return $this->configLoader->readToArray($source);
65
        }
66
        
67
        return array();
68
    }
69
}
70