(Grav GitSync) Automatic Commit from smokephil
This commit is contained in:
commit
4267db646d
2765 changed files with 462171 additions and 0 deletions
107
plugins/problems/cli/CheckCommand.php
Normal file
107
plugins/problems/cli/CheckCommand.php
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
|
||||
namespace Grav\Plugin\Console;
|
||||
|
||||
use Grav\Console\ConsoleCommand;
|
||||
use Grav\Plugin\Problems\Base\Problem;
|
||||
use Grav\Plugin\Problems\Base\ProblemChecker;
|
||||
use Symfony\Component\Console\Helper\Table;
|
||||
use Symfony\Component\Console\Helper\TableCell;
|
||||
use Symfony\Component\Console\Helper\TableSeparator;
|
||||
use Symfony\Component\Console\Style\SymfonyStyle;
|
||||
|
||||
/**
|
||||
* Class ProblemsCommand
|
||||
*
|
||||
* @package Grav\Plugin\Console
|
||||
*/
|
||||
class CheckCommand extends ConsoleCommand
|
||||
{
|
||||
/**
|
||||
* @return void
|
||||
*/
|
||||
protected function configure(): void
|
||||
{
|
||||
$this
|
||||
->setName('check')
|
||||
->setDescription('Check Problems')
|
||||
->setHelp('The <info>problems command</info> allows you display any potential problems with your Grav setup')
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
protected function serve(): int
|
||||
{
|
||||
$io = new SymfonyStyle($this->input, $this->output);
|
||||
|
||||
$plugin_dir = realpath(dirname(__DIR__));
|
||||
$problems_dir = $plugin_dir . '/classes/Problems';
|
||||
|
||||
require $plugin_dir . '/vendor/autoload.php';
|
||||
|
||||
$checker = new ProblemChecker();
|
||||
$checker->check($problems_dir);
|
||||
|
||||
$problems = $checker->getProblems();
|
||||
|
||||
$io->title('Grav Problems');
|
||||
|
||||
$table = new Table($this->output);
|
||||
$table->setStyle('default');
|
||||
$headers = ['ID', 'Status', 'Level', 'Message'];
|
||||
$rows = [];
|
||||
|
||||
/** @var Problem $problem */
|
||||
foreach ($problems as $problem) {
|
||||
$rows[] = new TableSeparator();
|
||||
|
||||
$rows[] = [
|
||||
$problem->getStatus() ? $problem->getId() : '<red>' . $problem->getId() . '</red>' ,
|
||||
$problem->getStatus() ? '<green>success</green>' : '<red>error</red>',
|
||||
$problem->getLevel() === 'critical' ? '<red>' . $problem->getLevel() . '</red>' : '<yellow>' .$problem->getLevel() . '</yellow>',
|
||||
strip_tags($problem->getMsg()),
|
||||
];
|
||||
|
||||
$details = $problem->getDetails();
|
||||
|
||||
if (is_array($details)) {
|
||||
|
||||
$errors_row = [];
|
||||
$success_row = [];
|
||||
|
||||
if (isset($details['errors'])) {
|
||||
foreach ($details['errors'] as $key => $value) {
|
||||
$errors_row[] = "<red>✗</red> <yellow>{$key} → {$value}</yellow>";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($details['success'])) {
|
||||
foreach ($details['success'] as $key => $value) {
|
||||
$success_row[] = "<green>✔</green> {$key} → {$value}";
|
||||
}
|
||||
}
|
||||
|
||||
foreach($errors_row as $e_row) {
|
||||
$rows[] = ['', new TableCell($e_row, array('colspan' => 3)), ];
|
||||
}
|
||||
|
||||
foreach($success_row as $e_row) {
|
||||
$rows[] = ['', new TableCell($e_row, array('colspan' => 3)), ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($rows)) {
|
||||
$table->setHeaders($headers);
|
||||
$table->setRows($rows);
|
||||
$table->render();
|
||||
} else {
|
||||
$io->text('did not find anything to check...');
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue