Passed
Pull Request — master (#14)
by Klaas
05:22
created

ConfigInstaller   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 2
dl 0
loc 45
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A install() 0 12 1
1
<?php
2
/**
3
 * Copyright MediaCT. All rights reserved.
4
 * https://www.mediact.nl
5
 */
6
7
namespace Mediact\TestingSuite\Composer\Installer;
8
9
use Composer\Factory;
10
use Composer\IO\IOInterface;
11
use Composer\Json\JsonFile;
12
use Mediact\TestingSuite\Composer\ConfigResolver;
13
14
class ConfigInstaller implements InstallerInterface
15
{
16
    /** @var JsonFile */
17
    private $file;
18
19
    /** @var ConfigResolver */
20
    private $resolver;
21
22
    /** @var IOInterface */
23
    private $io;
24
25
    /**
26
     * Constructor.
27
     *
28
     * @param ConfigResolver $resolver
29
     * @param IOInterface    $io
30
     * @param JsonFile|null  $file
31
     */
32 1
    public function __construct(
33
        ConfigResolver $resolver,
34
        IOInterface $io,
35
        JsonFile $file = null
36
    ) {
37 1
        $this->resolver = $resolver;
38 1
        $this->io       = $io;
39 1
        $this->file     = $file ?? new JsonFile(Factory::getComposerFile());
40 1
    }
41
42
    /**
43
     * Install.
44
     *
45
     * @return void
46
     */
47 1
    public function install()
48
    {
49 1
        $definition = $this->file->read();
50 1
        $config     = $definition['config'] ?? [];
51
52 1
        $config = array_replace_recursive(
53 1
            $this->resolver->resolve(),
54 1
            $config
55
        );
56
57 1
        $definition['config'] = $config;
58 1
        $this->file->write($definition);
59 1
    }
60
}
61