* @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;
}
}