| Code Coverage | ||||||||||
| Lines | Functions and Methods | Classes and Traits | ||||||||
| Total |  | 92.86% | 39 / 42 |  | 75.00% | 3 / 4 | CRAP |  | 0.00% | 0 / 1 | 
| Help |  | 92.86% | 39 / 42 |  | 75.00% | 3 / 4 | 11.04 |  | 0.00% | 0 / 1 | 
| run |  | 100.00% | 2 / 2 |  | 100.00% | 1 / 1 | 1 | |||
| showCommand |  | 90.91% | 30 / 33 |  | 0.00% | 0 / 1 | 7.04 | |||
| renderOption |  | 100.00% | 6 / 6 |  | 100.00% | 1 / 1 | 2 | |||
| getDescription |  | 100.00% | 1 / 1 |  | 100.00% | 1 / 1 | 1 | |||
| 1 | <?php declare(strict_types=1); | 
| 2 | /* | 
| 3 | * This file is part of Aplus Framework CLI Library. | 
| 4 | * | 
| 5 | * (c) Natan Felles <natanfelles@gmail.com> | 
| 6 | * | 
| 7 | * For the full copyright and license information, please view the LICENSE | 
| 8 | * file that was distributed with this source code. | 
| 9 | */ | 
| 10 | namespace Framework\CLI\Commands; | 
| 11 | |
| 12 | use Framework\CLI\CLI; | 
| 13 | use Framework\CLI\Command; | 
| 14 | |
| 15 | /** | 
| 16 | * Class Help. | 
| 17 | * | 
| 18 | * @package cli | 
| 19 | */ | 
| 20 | class Help extends Command | 
| 21 | { | 
| 22 | protected string $name = 'help'; | 
| 23 | protected string $usage = 'help [command_name]'; | 
| 24 | |
| 25 | public function run() : void | 
| 26 | { | 
| 27 | $command = $this->console->getArgument(0) ?? 'help'; | 
| 28 | $this->showCommand($command); | 
| 29 | } | 
| 30 | |
| 31 | protected function showCommand(string $commandName) : void | 
| 32 | { | 
| 33 | $command = $this->console->getCommand($commandName); | 
| 34 | if ($command === null) { | 
| 35 | CLI::error( | 
| 36 | $this->console->getLanguage()->render('cli', 'commandNotFound', [$commandName]) | 
| 37 | ); | 
| 38 | } | 
| 39 | CLI::write(CLI::style( | 
| 40 | $this->console->getLanguage()->render('cli', 'command') . ': ', | 
| 41 | CLI::FG_GREEN | 
| 42 | ) . $command->getName()); | 
| 43 | $value = $command->getDescription(); | 
| 44 | if ($value !== '') { | 
| 45 | CLI::write(CLI::style( | 
| 46 | $this->console->getLanguage()->render('cli', 'description') . ': ', | 
| 47 | CLI::FG_GREEN | 
| 48 | ) . $value); | 
| 49 | } | 
| 50 | $value = $command->getUsage(); | 
| 51 | if ($value !== '') { | 
| 52 | CLI::write(CLI::style( | 
| 53 | $this->console->getLanguage()->render('cli', 'usage') . ': ', | 
| 54 | CLI::FG_GREEN | 
| 55 | ) . $value); | 
| 56 | } | 
| 57 | $value = $command->getOptions(); | 
| 58 | if ($value) { | 
| 59 | CLI::write( | 
| 60 | $this->console->getLanguage()->render('cli', 'options') . ': ', | 
| 61 | CLI::FG_GREEN | 
| 62 | ); | 
| 63 | $lastKey = \array_key_last($value); | 
| 64 | foreach ($value as $option => $description) { | 
| 65 | CLI::write(' ' . $this->renderOption($option)); | 
| 66 | CLI::write(' ' . $description); | 
| 67 | if ($option !== $lastKey) { | 
| 68 | CLI::newLine(); | 
| 69 | } | 
| 70 | } | 
| 71 | } | 
| 72 | } | 
| 73 | |
| 74 | protected function renderOption(string $text) : string | 
| 75 | { | 
| 76 | $text = \trim(\preg_replace('/\s+/', '', $text)); | 
| 77 | $text = \explode(',', $text); | 
| 78 | \sort($text); | 
| 79 | foreach ($text as &$item) { | 
| 80 | $item = CLI::style($item, CLI::FG_YELLOW); | 
| 81 | } | 
| 82 | return \implode(', ', $text); | 
| 83 | } | 
| 84 | |
| 85 | public function getDescription() : string | 
| 86 | { | 
| 87 | return $this->console->getLanguage()->render('cli', 'help.description'); | 
| 88 | } | 
| 89 | } |