Test Failed
Pull Request — master (#13)
by
unknown
08:57
created

echo_block()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 3
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
require_once dirname(__FILE__).'/SymfonyRequirements.php';
4
5
$lineSize = 70;
6
$symfonyRequirements = new SymfonyRequirements();
7
$iniPath = $symfonyRequirements->getPhpIniConfigPath();
8
9
echo_title('Symfony Requirements Checker');
10
11
echo '> PHP is using the following php.ini file:'.PHP_EOL;
12
if ($iniPath) {
13
    echo_style('green', '  '.$iniPath);
14
} else {
15
    echo_style('warning', '  WARNING: No configuration file (php.ini) used by PHP!');
16
}
17
18
echo PHP_EOL.PHP_EOL;
19
20
echo '> Checking Symfony requirements:'.PHP_EOL.'  ';
21
22
$messages = array();
23
foreach ($symfonyRequirements->getRequirements() as $req) {
24
    /** @var $req Requirement */
25
    if ($helpText = get_error_message($req, $lineSize)) {
26
        echo_style('red', 'E');
27
        $messages['error'][] = $helpText;
28
    } else {
29
        echo_style('green', '.');
30
    }
31
}
32
33
$checkPassed = empty($messages['error']);
34
35
foreach ($symfonyRequirements->getRecommendations() as $req) {
36
    if ($helpText = get_error_message($req, $lineSize)) {
37
        echo_style('yellow', 'W');
38
        $messages['warning'][] = $helpText;
39
    } else {
40
        echo_style('green', '.');
41
    }
42
}
43
44
if ($checkPassed) {
45
    echo_block('success', 'OK', 'Your system is ready to run Symfony projects');
46
} else {
47
    echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects');
48
49
    echo_title('Fix the following mandatory requirements', 'red');
50
51
    foreach ($messages['error'] as $helpText) {
52
        echo ' * '.$helpText.PHP_EOL;
53
    }
54
}
55
56
if (!empty($messages['warning'])) {
57
    echo_title('Optional recommendations to improve your setup', 'yellow');
58
59
    foreach ($messages['warning'] as $helpText) {
60
        echo ' * '.$helpText.PHP_EOL;
61
    }
62
}
63
64
echo PHP_EOL;
65
echo_style('title', 'Note');
66
echo '  The command console could use a different php.ini file'.PHP_EOL;
67
echo_style('title', '~~~~');
68
echo '  than the one used with your web server. To be on the'.PHP_EOL;
69
echo '      safe side, please check the requirements from your web'.PHP_EOL;
70
echo '      server using the ';
71
echo_style('yellow', 'web/config.php');
72
echo ' script.'.PHP_EOL;
73
echo PHP_EOL;
74
75
exit($checkPassed ? 0 : 1);
76
77
function get_error_message(Requirement $requirement, $lineSize)
78
{
79
    if ($requirement->isFulfilled()) {
80
        return;
81
    }
82
83
    $errorMessage  = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.'   ').PHP_EOL;
84
    $errorMessage .= '   > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.'   > ').PHP_EOL;
85
86
    return $errorMessage;
87
}
88
89
function echo_title($title, $style = null)
90
{
91
    $style = $style ?: 'title';
92
93
    echo PHP_EOL;
94
    echo_style($style, $title.PHP_EOL);
95
    echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
96
    echo PHP_EOL;
97
}
98
99
function echo_style($style, $message)
100
{
101
    // ANSI color codes
102
    $styles = array(
103
        'reset' => "\033[0m",
104
        'red' => "\033[31m",
105
        'green' => "\033[32m",
106
        'yellow' => "\033[33m",
107
        'error' => "\033[37;41m",
108
        'success' => "\033[37;42m",
109
        'title' => "\033[34m",
110
    );
111
    $supports = has_color_support();
112
113
    echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
114
}
115
116
function echo_block($style, $title, $message)
117
{
118
    $message = ' '.trim($message).' ';
119
    $width = strlen($message);
120
121
    echo PHP_EOL.PHP_EOL;
122
123
    echo_style($style, str_repeat(' ', $width).PHP_EOL);
124
    echo_style($style, str_pad(' ['.$title.']',  $width, ' ', STR_PAD_RIGHT).PHP_EOL);
125
    echo_style($style, str_pad($message,  $width, ' ', STR_PAD_RIGHT).PHP_EOL);
126
    echo_style($style, str_repeat(' ', $width).PHP_EOL);
127
}
128
129
function has_color_support()
130
{
131
    static $support;
132
133
    if (null === $support) {
134
        if (DIRECTORY_SEPARATOR == '\\') {
135
            $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
136
        } else {
137
            $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
138
        }
139
    }
140
141
    return $support;
142
}
143