* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Command; use PrestaShop\PrestaShop\Core\CommandBus\Parser\CommandDefinitionParser; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Lists all commands and queries definitions */ class ListCommandsAndQueriesCommand extends Command { /** * @var CommandDefinitionParser */ private $commandDefinitionParser; /** * @var array */ private $commandAndQueries; public function __construct(CommandDefinitionParser $commandDefinitionParser, array $commandAndQueries) { parent::__construct(); $this->commandDefinitionParser = $commandDefinitionParser; $this->commandAndQueries = $commandAndQueries; } /** * {@inheritdoc} */ public function configure() { $this ->setName('prestashop:list:commands-and-queries') ->setDescription('Lists available CQRS commands and queries') ; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $outputStyle = new OutputFormatterStyle('blue', null); $output->getFormatter()->setStyle('blue', $outputStyle); foreach ($this->commandAndQueries as $key => $commandName) { $commandDefinition = $this->commandDefinitionParser->parseDefinition($commandName); $output->writeln(++$key . '.'); $output->writeln('Class: ' . $commandDefinition->getClassName() . ''); $output->writeln('Type: ' . $commandDefinition->getCommandType() . ''); $output->writeln('' . $commandDefinition->getDescription() . ''); $output->writeln(''); } return 0; } }