<?php /** * Part of the Joomla Framework Console Package * * @copyright Copyright (C) 2005 - 2021 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE */ namespace Joomla\Console\Command; use Joomla\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Command listing all available commands. * * @since 2.0.0 */ class ListCommand extends AbstractCommand { /** * The default command name * * @var string * @since 2.0.0 */ protected static $defaultName = 'list'; /** * Configure the command. * * @return void * * @since 2.0.0 */ protected function configure(): void { $this->setDescription("List the application's available commands"); $this->addArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'); $this->setHelp(<<<'EOF' The <info>%command.name%</info> command lists all of the application's commands: <info>php %command.full_name%</info> EOF ); } /** * Internal function to execute the command. * * @param InputInterface $input The input to inject into the command. * @param OutputInterface $output The output to inject into the command. * * @return integer The command exit code * * @since 2.0.0 */ protected function doExecute(InputInterface $input, OutputInterface $output): int { $descriptor = new DescriptorHelper; if ($this->getHelperSet() !== null) { $this->getHelperSet()->set($descriptor); } $descriptor->describe( $output, $this->getApplication(), [ 'namespace' => $input->getArgument('namespace'), ] ); return 0; } }