Skip to content
Snippets Groups Projects
Select Git revision
  • d36c6b22b1a888780279fd63103032e105890044
  • master default
2 results

PKG-INFO

Blame
  • symfony_requirements 3.84 KiB
    #!/usr/bin/env php
    <?php
    
    require_once dirname(__FILE__).'/../var/SymfonyRequirements.php';
    
    $lineSize = 70;
    $symfonyRequirements = new SymfonyRequirements();
    $iniPath = $symfonyRequirements->getPhpIniConfigPath();
    
    echo_title('Symfony Requirements Checker');
    
    echo '> PHP is using the following php.ini file:'.PHP_EOL;
    if ($iniPath) {
        echo_style('green', '  '.$iniPath);
    } else {
        echo_style('yellow', '  WARNING: No configuration file (php.ini) used by PHP!');
    }
    
    echo PHP_EOL.PHP_EOL;
    
    echo '> Checking Symfony requirements:'.PHP_EOL.'  ';
    
    $messages = array();
    foreach ($symfonyRequirements->getRequirements() as $req) {
        if ($helpText = get_error_message($req, $lineSize)) {
            echo_style('red', 'E');
            $messages['error'][] = $helpText;
        } else {
            echo_style('green', '.');
        }
    }
    
    $checkPassed = empty($messages['error']);
    
    foreach ($symfonyRequirements->getRecommendations() as $req) {
        if ($helpText = get_error_message($req, $lineSize)) {
            echo_style('yellow', 'W');
            $messages['warning'][] = $helpText;
        } else {
            echo_style('green', '.');
        }
    }
    
    if ($checkPassed) {
        echo_block('success', 'OK', 'Your system is ready to run Symfony projects');
    } else {
        echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects');
    
        echo_title('Fix the following mandatory requirements', 'red');
    
        foreach ($messages['error'] as $helpText) {
            echo ' * '.$helpText.PHP_EOL;
        }
    }
    
    if (!empty($messages['warning'])) {
        echo_title('Optional recommendations to improve your setup', 'yellow');
    
        foreach ($messages['warning'] as $helpText) {
            echo ' * '.$helpText.PHP_EOL;
        }
    }
    
    echo PHP_EOL;
    echo_style('title', 'Note');
    echo '  The command console could use a different php.ini file'.PHP_EOL;
    echo_style('title', '~~~~');
    echo '  than the one used with your web server. To be on the'.PHP_EOL;
    echo '      safe side, please check the requirements from your web'.PHP_EOL;
    echo '      server using the ';
    echo_style('yellow', 'web/config.php');
    echo ' script.'.PHP_EOL;
    echo PHP_EOL;
    
    exit($checkPassed ? 0 : 1);
    
    function get_error_message(Requirement $requirement, $lineSize)
    {
        if ($requirement->isFulfilled()) {
            return;
        }
    
        $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.'   ').PHP_EOL;
        $errorMessage .= '   > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.'   > ').PHP_EOL;
    
        return $errorMessage;
    }
    
    function echo_title($title, $style = null)
    {
        $style = $style ?: 'title';
    
        echo PHP_EOL;
        echo_style($style, $title.PHP_EOL);
        echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
        echo PHP_EOL;
    }
    
    function echo_style($style, $message)
    {
        // ANSI color codes
        $styles = array(
            'reset' => "\033[0m",
            'red' => "\033[31m",
            'green' => "\033[32m",
            'yellow' => "\033[33m",
            'error' => "\033[37;41m",
            'success' => "\033[37;42m",
            'title' => "\033[34m",
        );
        $supports = has_color_support();
    
        echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
    }
    
    function echo_block($style, $title, $message)
    {
        $message = ' '.trim($message).' ';
        $width = strlen($message);
    
        echo PHP_EOL.PHP_EOL;
    
        echo_style($style, str_repeat(' ', $width));
        echo PHP_EOL;
        echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT));
        echo PHP_EOL;
        echo_style($style, $message);
        echo PHP_EOL;
        echo_style($style, str_repeat(' ', $width));
        echo PHP_EOL;
    }
    
    function has_color_support()
    {
        static $support;
    
        if (null === $support) {
            if (DIRECTORY_SEPARATOR == '\\') {
                $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
            } else {
                $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
            }
        }
    
        return $support;
    }