* @author Juliette Reinders Folmer * @copyright 2006-2023 Squiz Pty Ltd (ABN 77 084 670 600) * @copyright 2023 PHPCSStandards and contributors * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/licence.txt BSD Licence */ namespace PHP_CodeSniffer; /** * Exits if the minimum requirements of PHP_CodeSniffer are not met. * * @return void */ function checkRequirements() { // IMPORTANT: Must stay in sync with the value of the `PHP_CodeSniffer\Util\ExitCode::REQUIREMENTS_NOT_MET` constant! $exitCode = 64; // Check the PHP version. if (PHP_VERSION_ID < 70200) { $error = 'ERROR: PHP_CodeSniffer requires PHP version 7.2.0 or greater.' . PHP_EOL; fwrite(STDERR, $error); exit($exitCode); } $requiredExtensions = array( 'tokenizer', 'xmlwriter', 'SimpleXML', ); $missingExtensions = array(); foreach ($requiredExtensions as $extension) { if (extension_loaded($extension) === false) { $missingExtensions[] = $extension; } } if (empty($missingExtensions) === false) { $last = array_pop($requiredExtensions); $required = implode(', ', $requiredExtensions); $required .= ' and ' . $last; if (count($missingExtensions) === 1) { $missing = $missingExtensions[0]; } else { $last = array_pop($missingExtensions); $missing = implode(', ', $missingExtensions); $missing .= ' and ' . $last; } $error = 'ERROR: PHP_CodeSniffer requires the %s extensions to be enabled. Please enable %s.' . PHP_EOL; fwrite(STDERR, sprintf($error, $required, $missing)); exit($exitCode); } }