ComposerInfo   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 11
lcom 1
cbo 0
dl 0
loc 52
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 3
A projectRoot() 0 4 1
A valid() 0 4 2
A pathForType() 0 9 3
A installerPaths() 0 7 2
1
<?php
2
3
namespace VersionTool\Util;
4
5
class ComposerInfo
6
{
7
    /** @var array */
8
    protected $composer_json = [];
9
10
    /** @var string */
11
    protected $path;
12
13
    public function __construct($path)
14
    {
15
        $this->path = $path;
16
        $composer_json_path = "$path/composer.json";
17
        if (!file_exists($composer_json_path)) {
18
            return;
19
        }
20
21
        $composer_json_contents = file_get_contents($composer_json_path);
22
        if (empty($composer_json_contents)) {
23
            return;
24
        }
25
26
        $this->composer_json = json_decode($composer_json_contents, true);
27
    }
28
29
    public function projectRoot()
30
    {
31
        return $this->path;
32
    }
33
34
    public function valid()
35
    {
36
        return !empty($this->composer_json) && isset($this->composer_json['name']);
37
    }
38
39
    public function pathForType($typeToFind)
40
    {
41
        foreach ($this->installerPaths() as $path => $types) {
42
            if (in_array($typeToFind, $types)) {
43
                return $path;
44
            }
45
        }
46
        return false;
47
    }
48
49
    public function installerPaths()
50
    {
51
        if (!isset($this->composer_json['extra']['installer-paths'])) {
52
            return [];
53
        }
54
        return $this->composer_json['extra']['installer-paths'];
55
    }
56
}
57