2015-08-18 00:00:26 +00:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Console\Command ;
use Symfony\Component\Console\Helper\DescriptorHelper ;
use Symfony\Component\Console\Input\InputArgument ;
use Symfony\Component\Console\Input\InputOption ;
use Symfony\Component\Console\Input\InputInterface ;
use Symfony\Component\Console\Output\OutputInterface ;
use Symfony\Component\Console\Input\InputDefinition ;
/**
* ListCommand displays the list of all available commands for the application .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class ListCommand extends Command
{
/**
* { @ inheritdoc }
*/
protected function configure ()
{
$this
-> setName ( 'list' )
-> setDefinition ( $this -> createDefinition ())
-> setDescription ( 'Lists commands' )
-> setHelp ( <<< EOF
The < info >% command . name %</ info > command lists all commands :
< info > php % command . full_name %</ info >
You can also display the commands for a specific namespace :
< info > php % command . full_name % test </ info >
You can also output the information in other formats by using the < comment >-- format </ comment > option :
< info > php % command . full_name % -- format = xml </ info >
It ' s also possible to get raw list of commands ( useful for embedding command runner ) :
< info > php % command . full_name % -- raw </ info >
EOF
)
;
}
/**
* { @ inheritdoc }
*/
public function getNativeDefinition ()
{
return $this -> createDefinition ();
}
/**
* { @ inheritdoc }
*/
protected function execute ( InputInterface $input , OutputInterface $output )
{
if ( $input -> getOption ( 'xml' )) {
2015-08-27 19:03:05 +00:00
@ trigger_error ( 'The --xml option was deprecated in version 2.7 and will be removed in version 3.0. Use the --format option instead.' , E_USER_DEPRECATED );
2015-08-18 00:00:26 +00:00
$input -> setOption ( 'format' , 'xml' );
}
$helper = new DescriptorHelper ();
$helper -> describe ( $output , $this -> getApplication (), array (
'format' => $input -> getOption ( 'format' ),
'raw_text' => $input -> getOption ( 'raw' ),
'namespace' => $input -> getArgument ( 'namespace' ),
));
}
/**
* { @ inheritdoc }
*/
private function createDefinition ()
{
return new InputDefinition ( array (
new InputArgument ( 'namespace' , InputArgument :: OPTIONAL , 'The namespace name' ),
new InputOption ( 'xml' , null , InputOption :: VALUE_NONE , 'To output list as XML' ),
new InputOption ( 'raw' , null , InputOption :: VALUE_NONE , 'To output raw command list' ),
new InputOption ( 'format' , null , InputOption :: VALUE_REQUIRED , 'The output format (txt, xml, json, or md)' , 'txt' ),
));
}
}