Passed
Pull Request — master (#297)
by Fabien
02:21
created

Validator::validateFileExtensions()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 2
nc 2
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Churn\Configuration;
6
7
use Webmozart\Assert\Assert;
8
9
class Validator
10
{
11
12
    /**
13
     * @param array<mixed> $configuration The array containing the configuration values.
14
     */
15
    public function validateConfigurationValues(array $configuration): void
16
    {
17
        $this->validateDirectoriesToScan($configuration);
18
        $this->validateFilesToShow($configuration);
19
        $this->validateMinScoreToShow($configuration);
20
        $this->validateParallelJobs($configuration);
21
        $this->validateCommitsSince($configuration);
22
        $this->validateFilesToIgnore($configuration);
23
        $this->validateFileExtensions($configuration);
24
        $this->validateVCS($configuration);
25
    }
26
27
    /**
28
     * @param array<mixed> $configuration The array containing the configuration values.
29
     */
30
    private function validateDirectoriesToScan(array $configuration): void
31
    {
32
        if (!\array_key_exists('directoriesToScan', $configuration)) {
33
            return;
34
        }
35
36
        Assert::allString($configuration['directoriesToScan'], 'Directories to scan should be an array of strings');
37
    }
38
39
    /**
40
     * @param array<mixed> $configuration The array containing the configuration values.
41
     */
42
    private function validateFilesToShow(array $configuration): void
43
    {
44
        if (!\array_key_exists('filesToShow', $configuration)) {
45
            return;
46
        }
47
48
        Assert::integer($configuration['filesToShow'], 'Files to show should be an integer');
49
    }
50
51
    /**
52
     * @param array<mixed> $configuration The array containing the configuration values.
53
     */
54
    private function validateMinScoreToShow(array $configuration): void
55
    {
56
        if (!\array_key_exists('minScoreToShow', $configuration)) {
57
            return;
58
        }
59
60
        Assert::numeric($configuration['minScoreToShow'], 'Minimum score to show should be a number');
61
    }
62
63
    /**
64
     * @param array<mixed> $configuration The array containing the configuration values.
65
     */
66
    private function validateParallelJobs(array $configuration): void
67
    {
68
        if (!\array_key_exists('parallelJobs', $configuration)) {
69
            return;
70
        }
71
72
        Assert::integer($configuration['parallelJobs'], 'Amount of parallel jobs should be an integer');
73
    }
74
75
    /**
76
     * @param array<mixed> $configuration The array containing the configuration values.
77
     */
78
    private function validateCommitsSince(array $configuration): void
79
    {
80
        if (!\array_key_exists('commitsSince', $configuration)) {
81
            return;
82
        }
83
84
        Assert::string($configuration['commitsSince'], 'Commits since should be a string');
85
    }
86
87
    /**
88
     * @param array<mixed> $configuration The array containing the configuration values.
89
     */
90
    private function validateFilesToIgnore(array $configuration): void
91
    {
92
        if (!\array_key_exists('filesToIgnore', $configuration)) {
93
            return;
94
        }
95
96
        Assert::isArray($configuration['filesToIgnore'], 'Files to ignore should be an array of strings');
97
    }
98
99
    /**
100
     * @param array<mixed> $configuration The array containing the configuration values.
101
     */
102
    private function validateFileExtensions(array $configuration): void
103
    {
104
        if (!\array_key_exists('fileExtensions', $configuration)) {
105
            return;
106
        }
107
108
        Assert::isArray($configuration['fileExtensions'], 'File extensions should be an array of strings');
109
    }
110
111
    /**
112
     * @param array<mixed> $configuration The array containing the configuration values.
113
     */
114
    private function validateVCS(array $configuration): void
115
    {
116
        if (!\array_key_exists('vcs', $configuration)) {
117
            return;
118
        }
119
120
        Assert::string($configuration['vcs'], 'VCS should be a string');
121
    }
122
}
123