1 | <?php |
---|
2 | |
---|
3 | /* |
---|
4 | * This file is part of the Symfony package. |
---|
5 | * |
---|
6 | * (c) Fabien Potencier <fabien@symfony.com> |
---|
7 | * |
---|
8 | * For the full copyright and license information, please view the LICENSE |
---|
9 | * file that was distributed with this source code. |
---|
10 | */ |
---|
11 | |
---|
12 | namespace Symfony\Component\Console\Command; |
---|
13 | |
---|
14 | use Symfony\Component\Console\Input\InputArgument; |
---|
15 | use Symfony\Component\Console\Input\InputOption; |
---|
16 | use Symfony\Component\Console\Input\InputInterface; |
---|
17 | use Symfony\Component\Console\Output\OutputInterface; |
---|
18 | use Symfony\Component\Console\Output\Output; |
---|
19 | use Symfony\Component\Console\Command\Command; |
---|
20 | |
---|
21 | /** |
---|
22 | * HelpCommand displays the help for a given command. |
---|
23 | * |
---|
24 | * @author Fabien Potencier <fabien@symfony.com> |
---|
25 | */ |
---|
26 | class HelpCommand extends Command |
---|
27 | { |
---|
28 | private $command; |
---|
29 | |
---|
30 | /** |
---|
31 | * {@inheritdoc} |
---|
32 | */ |
---|
33 | protected function configure() |
---|
34 | { |
---|
35 | $this->ignoreValidationErrors = true; |
---|
36 | |
---|
37 | $this |
---|
38 | ->setDefinition(array( |
---|
39 | new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), |
---|
40 | new InputOption('xml', null, InputOption::VALUE_NONE, 'To output help as XML'), |
---|
41 | )) |
---|
42 | ->setName('help') |
---|
43 | ->setDescription('Displays help for a command') |
---|
44 | ->setHelp(<<<EOF |
---|
45 | The <info>help</info> command displays help for a given command: |
---|
46 | |
---|
47 | <info>./symfony help list</info> |
---|
48 | |
---|
49 | You can also output the help as XML by using the <comment>--xml</comment> option: |
---|
50 | |
---|
51 | <info>./symfony help --xml list</info> |
---|
52 | EOF |
---|
53 | ); |
---|
54 | } |
---|
55 | |
---|
56 | /** |
---|
57 | * Sets the command |
---|
58 | * |
---|
59 | * @param Command $command The command to set |
---|
60 | */ |
---|
61 | public function setCommand(Command $command) |
---|
62 | { |
---|
63 | $this->command = $command; |
---|
64 | } |
---|
65 | |
---|
66 | /** |
---|
67 | * {@inheritdoc} |
---|
68 | */ |
---|
69 | protected function execute(InputInterface $input, OutputInterface $output) |
---|
70 | { |
---|
71 | if (null === $this->command) { |
---|
72 | $this->command = $this->getApplication()->get($input->getArgument('command_name')); |
---|
73 | } |
---|
74 | |
---|
75 | if ($input->getOption('xml')) { |
---|
76 | $output->writeln($this->command->asXml(), OutputInterface::OUTPUT_RAW); |
---|
77 | } else { |
---|
78 | $output->writeln($this->command->asText()); |
---|
79 | } |
---|
80 | } |
---|
81 | } |
---|