Skip to content

Commit

Permalink
Dump requirement checker (#515)
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Mönch authored Dec 18, 2020
1 parent 3387777 commit 5e65d41
Show file tree
Hide file tree
Showing 24 changed files with 493 additions and 256 deletions.
4 changes: 2 additions & 2 deletions .requirement-checker/bin/check-requirements.php
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

require __DIR__ . '/../vendor/autoload.php';
if (\false === \in_array(\PHP_SAPI, array('cli', 'phpdbg', 'embed'), \true)) {
echo \PHP_EOL . 'The application may only be invoked from a command line, got "' . \PHP_SAPI . '"' . \PHP_EOL;
exit(1);
}
if ((\false === isset($_SERVER['BOX_REQUIREMENT_CHECKER']) || \true === (bool) $_SERVER['BOX_REQUIREMENT_CHECKER']) && \false === \HumbugBox383\KevinGH\RequirementChecker\Checker::checkRequirements()) {
if ((\false === isset($_SERVER['BOX_REQUIREMENT_CHECKER']) || \true === (bool) $_SERVER['BOX_REQUIREMENT_CHECKER']) && \false === \HumbugBox3100\KevinGH\RequirementChecker\Checker::checkRequirements()) {
exit(1);
}
35 changes: 16 additions & 19 deletions .requirement-checker/src/Checker.php
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

/**
@symfony
*/
final class Checker
{
private static $requirementsConfig;
public static function checkRequirements()
{
$requirements = self::retrieveRequirements();
$checkPassed = $requirements->evaluateRequirements();
$io = new \HumbugBox383\KevinGH\RequirementChecker\IO();
self::printCheck($checkPassed, new \HumbugBox383\KevinGH\RequirementChecker\Printer($io->getVerbosity(), $io->hasColorSupport()), $requirements);
$io = new \HumbugBox3100\KevinGH\RequirementChecker\IO();
self::printCheck($checkPassed, new \HumbugBox3100\KevinGH\RequirementChecker\Printer($io->getVerbosity(), $io->hasColorSupport()), $requirements);
return $checkPassed;
}
public static function printCheck($checkPassed, \HumbugBox383\KevinGH\RequirementChecker\Printer $printer, \HumbugBox383\KevinGH\RequirementChecker\RequirementCollection $requirements)
public static function printCheck($checkPassed, \HumbugBox3100\KevinGH\RequirementChecker\Printer $printer, \HumbugBox3100\KevinGH\RequirementChecker\RequirementCollection $requirements)
{
if (\false === $checkPassed && \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE > $printer->getVerbosity()) {
$printer->setVerbosity(\HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE);
if (\false === $checkPassed && \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE > $printer->getVerbosity()) {
$printer->setVerbosity(\HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE);
}
$verbosity = \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE;
$verbosity = \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_VERY_VERBOSE;
$iniPath = $requirements->getPhpIniPath();
$printer->title('Box Requirements Checker', $verbosity);
$printer->printv('> Using PHP ', $verbosity);
Expand All @@ -42,24 +39,24 @@ public static function printCheck($checkPassed, \HumbugBox383\KevinGH\Requiremen
$errorMessages = array();
foreach ($requirements->getRequirements() as $requirement) {
if ($errorMessage = $printer->getRequirementErrorMessage($requirement)) {
if (\HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG === $printer->getVerbosity()) {
$printer->printvln('' . $requirement->getTestMessage(), \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG, 'red');
$printer->printv(' ', \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG);
if (\HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG === $printer->getVerbosity()) {
$printer->printvln('' . $requirement->getTestMessage(), \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG, 'red');
$printer->printv(' ', \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG);
$errorMessages[] = $errorMessage;
} else {
$printer->printv('E', $verbosity, 'red');
$errorMessages[] = $errorMessage;
}
continue;
}
if (\HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG === $printer->getVerbosity()) {
$printer->printvln('' . $requirement->getHelpText(), \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG, 'green');
$printer->printv(' ', \HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG);
if (\HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG === $printer->getVerbosity()) {
$printer->printvln('' . $requirement->getHelpText(), \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG, 'green');
$printer->printv(' ', \HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG);
} else {
$printer->printv('.', $verbosity, 'green');
}
}
if (\HumbugBox383\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG !== $printer->getVerbosity() && \count($requirements) > 0) {
if (\HumbugBox3100\KevinGH\RequirementChecker\IO::VERBOSITY_DEBUG !== $printer->getVerbosity() && \count($requirements) > 0) {
$printer->printvln('', $verbosity);
}
if ($requirements->evaluateRequirements()) {
Expand All @@ -79,9 +76,9 @@ private static function retrieveRequirements()
self::$requirementsConfig = __DIR__ . '/../.requirements.php';
}
$config = (require self::$requirementsConfig);
$requirements = new \HumbugBox383\KevinGH\RequirementChecker\RequirementCollection();
$requirements = new \HumbugBox3100\KevinGH\RequirementChecker\RequirementCollection();
foreach ($config as $constraint) {
$requirements->addRequirement('php' === $constraint['type'] ? new \HumbugBox383\KevinGH\RequirementChecker\IsPhpVersionFulfilled($constraint['condition']) : new \HumbugBox383\KevinGH\RequirementChecker\IsExtensionFulfilled($constraint['condition']), $constraint['message'], $constraint['helpMessage']);
$requirements->addRequirement('php' === $constraint['type'] ? new \HumbugBox3100\KevinGH\RequirementChecker\IsPhpVersionFulfilled($constraint['condition']) : new \HumbugBox3100\KevinGH\RequirementChecker\IsExtensionFulfilled($constraint['condition']), $constraint['message'], $constraint['helpMessage']);
}
return $requirements;
}
Expand Down
5 changes: 1 addition & 4 deletions .requirement-checker/src/IO.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

final class IO
{
Expand Down Expand Up @@ -90,9 +90,6 @@ private function configureVerbosity()
}
return $shellVerbosity;
}
/**
@symfony
*/
private function checkColorSupport()
{
if ($this->hasParameter(array('--ansi'))) {
Expand Down
4 changes: 2 additions & 2 deletions .requirement-checker/src/IsExtensionFulfilled.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

final class IsExtensionFulfilled implements \HumbugBox383\KevinGH\RequirementChecker\IsFulfilled
final class IsExtensionFulfilled implements \HumbugBox3100\KevinGH\RequirementChecker\IsFulfilled
{
private $requiredExtension;
public function __construct($requiredExtension)
Expand Down
2 changes: 1 addition & 1 deletion .requirement-checker/src/IsFulfilled.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

interface IsFulfilled
{
Expand Down
8 changes: 4 additions & 4 deletions .requirement-checker/src/IsPhpVersionFulfilled.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

use HumbugBox383\Composer\Semver\Semver;
final class IsPhpVersionFulfilled implements \HumbugBox383\KevinGH\RequirementChecker\IsFulfilled
use HumbugBox3100\Composer\Semver\Semver;
final class IsPhpVersionFulfilled implements \HumbugBox3100\KevinGH\RequirementChecker\IsFulfilled
{
private $requiredPhpVersion;
public function __construct($requiredPhpVersion)
Expand All @@ -12,6 +12,6 @@ public function __construct($requiredPhpVersion)
}
public function __invoke()
{
return \HumbugBox383\Composer\Semver\Semver::satisfies(\sprintf('%d.%d.%d', \PHP_MAJOR_VERSION, \PHP_MINOR_VERSION, \PHP_RELEASE_VERSION), $this->requiredPhpVersion);
return \HumbugBox3100\Composer\Semver\Semver::satisfies(\sprintf('%d.%d.%d', \PHP_MAJOR_VERSION, \PHP_MINOR_VERSION, \PHP_RELEASE_VERSION), $this->requiredPhpVersion);
}
}
29 changes: 16 additions & 13 deletions .requirement-checker/src/Printer.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

final class Printer
{
Expand All @@ -11,12 +11,12 @@ final class Printer
public function __construct($verbosity, $supportColors, $width = null)
{
if (null === $width) {
$terminal = new \HumbugBox383\KevinGH\RequirementChecker\Terminal();
$width = \min($terminal->getWidth(), 80);
$terminal = new \HumbugBox3100\KevinGH\RequirementChecker\Terminal();
$width = $terminal->getWidth();
}
$this->verbosity = $verbosity;
$this->supportColors = $supportColors;
$this->width = $width;
$this->width = $width ?: 80;
}
public function getVerbosity()
{
Expand All @@ -36,7 +36,7 @@ public function title($title, $verbosity, $style = null)
$this->printvln(\str_repeat('=', \min(\strlen($title), $this->width)), $verbosity, $style);
$this->printvln('', $verbosity, $style);
}
public function getRequirementErrorMessage(\HumbugBox383\KevinGH\RequirementChecker\Requirement $requirement)
public function getRequirementErrorMessage(\HumbugBox3100\KevinGH\RequirementChecker\Requirement $requirement)
{
if ($requirement->isFulfilled()) {
return null;
Expand All @@ -47,19 +47,22 @@ public function getRequirementErrorMessage(\HumbugBox383\KevinGH\RequirementChec
public function block($title, $message, $verbosity, $style = null)
{
$prefix = ' [' . $title . '] ';
$lineLength = $this->width - \strlen($prefix) - 1;
if ($lineLength < 0) {
$lineLength = 0;
}
$message = $prefix . \trim($message);
$lines = array();
$remainingMessage = $message;
while ($remainingMessage !== '') {
$wrapped = \wordwrap($remainingMessage, $this->width - 3, '¬');
$exploded = \explode('¬', $wrapped);
$line = $exploded[0];
$remainingMessage = \ltrim(\substr($remainingMessage, \strlen($line)));
if ($remainingMessage !== '') {
$remainingMessage = \str_repeat(' ', \strlen($prefix)) . $remainingMessage;
$wrapped = \wordwrap($remainingMessage, $lineLength, '¬');
$wrapped = \explode('¬', $wrapped);
do {
$line = \array_shift($wrapped);
if ($lines && $lineLength > 0) {
$line = \str_repeat(' ', \strlen($prefix)) . \ltrim($line);
}
$lines[] = \str_pad($line, $this->width, ' ', \STR_PAD_RIGHT);
}
} while (\count($wrapped));
$this->printvln('', $verbosity);
$this->printvln(\str_repeat(' ', $this->width), $verbosity, $style);
foreach ($lines as $line) {
Expand Down
5 changes: 1 addition & 4 deletions .requirement-checker/src/Requirement.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

/**
@symfony
*/
final class Requirement
{
private $checkIsFulfilled;
Expand Down
11 changes: 4 additions & 7 deletions .requirement-checker/src/RequirementCollection.php
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

use ArrayIterator;
use Countable;
use IteratorAggregate;
use Traversable;
/**
@symfony
*/
final class RequirementCollection implements \IteratorAggregate, \Countable
{
private $requirements = array();
Expand All @@ -20,13 +17,13 @@ public function count()
{
return \count($this->requirements);
}
public function add(\HumbugBox383\KevinGH\RequirementChecker\Requirement $requirement)
public function add(\HumbugBox3100\KevinGH\RequirementChecker\Requirement $requirement)
{
$this->requirements[] = $requirement;
}
public function addRequirement($checkIsFulfilled, $testMessage, $helpText)
{
$this->add(new \HumbugBox383\KevinGH\RequirementChecker\Requirement($checkIsFulfilled, $testMessage, $helpText));
$this->add(new \HumbugBox3100\KevinGH\RequirementChecker\Requirement($checkIsFulfilled, $testMessage, $helpText));
}
public function getRequirements()
{
Expand All @@ -38,7 +35,7 @@ public function getPhpIniPath()
}
public function evaluateRequirements()
{
return \array_reduce($this->requirements, function ($checkPassed, \HumbugBox383\KevinGH\RequirementChecker\Requirement $requirement) {
return \array_reduce($this->requirements, function ($checkPassed, \HumbugBox3100\KevinGH\RequirementChecker\Requirement $requirement) {
return $checkPassed && $requirement->isFulfilled();
}, \true);
}
Expand Down
8 changes: 4 additions & 4 deletions .requirement-checker/src/Terminal.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
<?php

namespace HumbugBox383\KevinGH\RequirementChecker;
namespace HumbugBox3100\KevinGH\RequirementChecker;

/**
@symfony
*/
class Terminal
{
private static $width;
Expand Down Expand Up @@ -37,6 +34,9 @@ public static function hasSttyAvailable()
if (null !== self::$stty) {
return self::$stty;
}
if (!\function_exists('exec')) {
return \false;
}
\exec('stty 2>&1', $output, $exitcode);
return self::$stty = 0 === $exitcode;
}
Expand Down
2 changes: 1 addition & 1 deletion .requirement-checker/vendor/autoload.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit4dcc0e1d4584ae7b8040cfa1b3dfe9e3::getLoader();
return ComposerAutoloaderInit07b4f39005452b449fc512b8b494da0a::getLoader();
4 changes: 2 additions & 2 deletions .requirement-checker/vendor/composer/ClassLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
* @see https://www.php-fig.org/psr/psr-0/
* @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
Expand Down
39 changes: 22 additions & 17 deletions .requirement-checker/vendor/composer/autoload_classmap.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,26 @@
$baseDir = dirname($vendorDir);

return array(
'HumbugBox383\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php',
'HumbugBox383\\Composer\\Semver\\Constraint\\AbstractConstraint' => $vendorDir . '/composer/semver/src/Constraint/AbstractConstraint.php',
'HumbugBox383\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php',
'HumbugBox383\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php',
'HumbugBox383\\Composer\\Semver\\Constraint\\EmptyConstraint' => $vendorDir . '/composer/semver/src/Constraint/EmptyConstraint.php',
'HumbugBox383\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php',
'HumbugBox383\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php',
'HumbugBox383\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\Checker' => $baseDir . '/src/Checker.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\IO' => $baseDir . '/src/IO.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => $baseDir . '/src/IsExtensionFulfilled.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\IsFulfilled' => $baseDir . '/src/IsFulfilled.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => $baseDir . '/src/IsPhpVersionFulfilled.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\Printer' => $baseDir . '/src/Printer.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\Requirement' => $baseDir . '/src/Requirement.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\RequirementCollection' => $baseDir . '/src/RequirementCollection.php',
'HumbugBox383\\KevinGH\\RequirementChecker\\Terminal' => $baseDir . '/src/Terminal.php',
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'HumbugBox3100\\Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php',
'HumbugBox3100\\Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php',
'HumbugBox3100\\Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php',
'HumbugBox3100\\Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php',
'HumbugBox3100\\Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php',
'HumbugBox3100\\Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php',
'HumbugBox3100\\Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\Checker' => $baseDir . '/src/Checker.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\IO' => $baseDir . '/src/IO.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\IsExtensionFulfilled' => $baseDir . '/src/IsExtensionFulfilled.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\IsFulfilled' => $baseDir . '/src/IsFulfilled.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\IsPhpVersionFulfilled' => $baseDir . '/src/IsPhpVersionFulfilled.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\Printer' => $baseDir . '/src/Printer.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\Requirement' => $baseDir . '/src/Requirement.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\RequirementCollection' => $baseDir . '/src/RequirementCollection.php',
'HumbugBox3100\\KevinGH\\RequirementChecker\\Terminal' => $baseDir . '/src/Terminal.php',
);
4 changes: 2 additions & 2 deletions .requirement-checker/vendor/composer/autoload_psr4.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
$baseDir = dirname($vendorDir);

return array(
'HumbugBox383\\KevinGH\\RequirementChecker\\' => array($baseDir . '/src'),
'HumbugBox383\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
'HumbugBox3100\\KevinGH\\RequirementChecker\\' => array($baseDir . '/src'),
'HumbugBox3100\\Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'),
);
Loading

0 comments on commit 5e65d41

Please sign in to comment.