Yaffs site version 1.1
[yaffs-website] / vendor / symfony / console / Command / ListCommand.php
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\Helper\DescriptorHelper;
15 use Symfony\Component\Console\Input\InputArgument;
16 use Symfony\Component\Console\Input\InputOption;
17 use Symfony\Component\Console\Input\InputInterface;
18 use Symfony\Component\Console\Output\OutputInterface;
19 use Symfony\Component\Console\Input\InputDefinition;
20
21 /**
22  * ListCommand displays the list of all available commands for the application.
23  *
24  * @author Fabien Potencier <fabien@symfony.com>
25  */
26 class ListCommand extends Command
27 {
28     /**
29      * {@inheritdoc}
30      */
31     protected function configure()
32     {
33         $this
34             ->setName('list')
35             ->setDefinition($this->createDefinition())
36             ->setDescription('Lists commands')
37             ->setHelp(<<<'EOF'
38 The <info>%command.name%</info> command lists all commands:
39
40   <info>php %command.full_name%</info>
41
42 You can also display the commands for a specific namespace:
43
44   <info>php %command.full_name% test</info>
45
46 You can also output the information in other formats by using the <comment>--format</comment> option:
47
48   <info>php %command.full_name% --format=xml</info>
49
50 It's also possible to get raw list of commands (useful for embedding command runner):
51
52   <info>php %command.full_name% --raw</info>
53 EOF
54             )
55         ;
56     }
57
58     /**
59      * {@inheritdoc}
60      */
61     public function getNativeDefinition()
62     {
63         return $this->createDefinition();
64     }
65
66     /**
67      * {@inheritdoc}
68      */
69     protected function execute(InputInterface $input, OutputInterface $output)
70     {
71         if ($input->getOption('xml')) {
72             @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);
73
74             $input->setOption('format', 'xml');
75         }
76
77         $helper = new DescriptorHelper();
78         $helper->describe($output, $this->getApplication(), array(
79             'format' => $input->getOption('format'),
80             'raw_text' => $input->getOption('raw'),
81             'namespace' => $input->getArgument('namespace'),
82         ));
83     }
84
85     /**
86      * {@inheritdoc}
87      */
88     private function createDefinition()
89     {
90         return new InputDefinition(array(
91             new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'),
92             new InputOption('xml', null, InputOption::VALUE_NONE, 'To output list as XML'),
93             new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'),
94             new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'),
95         ));
96     }
97 }