2026-02-25 06:59:34 +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\Descriptor\ApplicationDescription ;
use Symfony\Component\Console\Helper\DescriptorHelper ;
use Symfony\Component\Console\Input\InputArgument ;
use Symfony\Component\Console\Input\InputInterface ;
use Symfony\Component\Console\Input\InputOption ;
use Symfony\Component\Console\Output\OutputInterface ;
/**
* HelpCommand displays the help for a given command .
*
* @ author Fabien Potencier < fabien @ symfony . com >
*/
class HelpCommand extends Command
{
2026-02-27 00:03:00 +00:00
private Command $command ;
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
protected function configure () : void
2026-02-25 06:59:34 +00:00
{
$this -> ignoreValidationErrors ();
$this
-> setName ( 'help' )
-> setDefinition ([
2026-02-27 00:03:00 +00:00
new InputArgument ( 'command_name' , InputArgument :: OPTIONAL , 'The command name' , 'help' , fn () => array_keys (( new ApplicationDescription ( $this -> getApplication ())) -> getCommands ())),
new InputOption ( 'format' , null , InputOption :: VALUE_REQUIRED , 'The output format (txt, xml, json, or md)' , 'txt' , fn () => ( new DescriptorHelper ()) -> getFormats ()),
2026-02-25 06:59:34 +00:00
new InputOption ( 'raw' , null , InputOption :: VALUE_NONE , 'To output raw command help' ),
])
-> setDescription ( 'Display help for a command' )
-> setHelp ( <<< 'EOF'
2026-02-27 00:03:00 +00:00
The < info >% command . name %</ info > command displays help for a given command :
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
< info >% command . full_name % list </ info >
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
You can also output the help in other formats by using the < info >-- format </ info > option :
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
< info >% command . full_name % -- format = xml list </ info >
2026-02-25 06:59:34 +00:00
2026-02-27 00:03:00 +00:00
To display the list of available commands , please use the < info > list </ info > command .
EOF
2026-02-25 06:59:34 +00:00
)
;
}
2026-02-27 00:03:00 +00:00
public function setCommand ( Command $command ) : void
2026-02-25 06:59:34 +00:00
{
$this -> command = $command ;
}
2026-02-27 00:03:00 +00:00
protected function execute ( InputInterface $input , OutputInterface $output ) : int
2026-02-25 06:59:34 +00:00
{
2026-02-27 00:03:00 +00:00
$this -> command ? ? = $this -> getApplication () -> find ( $input -> getArgument ( 'command_name' ));
2026-02-25 06:59:34 +00:00
$helper = new DescriptorHelper ();
$helper -> describe ( $output , $this -> command , [
'format' => $input -> getOption ( 'format' ),
'raw_text' => $input -> getOption ( 'raw' ),
]);
2026-02-27 00:03:00 +00:00
unset ( $this -> command );
2026-02-25 06:59:34 +00:00
return 0 ;
}
}