Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\Console\Descriptor;
|
Chris@0
|
13
|
Chris@0
|
14 use Symfony\Component\Console\Application;
|
Chris@0
|
15 use Symfony\Component\Console\Command\Command;
|
Chris@0
|
16 use Symfony\Component\Console\Input\InputArgument;
|
Chris@0
|
17 use Symfony\Component\Console\Input\InputDefinition;
|
Chris@0
|
18 use Symfony\Component\Console\Input\InputOption;
|
Chris@0
|
19 use Symfony\Component\Console\Output\OutputInterface;
|
Chris@0
|
20 use Symfony\Component\Console\Exception\InvalidArgumentException;
|
Chris@0
|
21
|
Chris@0
|
22 /**
|
Chris@0
|
23 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
|
Chris@0
|
24 *
|
Chris@0
|
25 * @internal
|
Chris@0
|
26 */
|
Chris@0
|
27 abstract class Descriptor implements DescriptorInterface
|
Chris@0
|
28 {
|
Chris@0
|
29 /**
|
Chris@0
|
30 * @var OutputInterface
|
Chris@0
|
31 */
|
Chris@0
|
32 protected $output;
|
Chris@0
|
33
|
Chris@0
|
34 /**
|
Chris@0
|
35 * {@inheritdoc}
|
Chris@0
|
36 */
|
Chris@0
|
37 public function describe(OutputInterface $output, $object, array $options = array())
|
Chris@0
|
38 {
|
Chris@0
|
39 $this->output = $output;
|
Chris@0
|
40
|
Chris@0
|
41 switch (true) {
|
Chris@0
|
42 case $object instanceof InputArgument:
|
Chris@0
|
43 $this->describeInputArgument($object, $options);
|
Chris@0
|
44 break;
|
Chris@0
|
45 case $object instanceof InputOption:
|
Chris@0
|
46 $this->describeInputOption($object, $options);
|
Chris@0
|
47 break;
|
Chris@0
|
48 case $object instanceof InputDefinition:
|
Chris@0
|
49 $this->describeInputDefinition($object, $options);
|
Chris@0
|
50 break;
|
Chris@0
|
51 case $object instanceof Command:
|
Chris@0
|
52 $this->describeCommand($object, $options);
|
Chris@0
|
53 break;
|
Chris@0
|
54 case $object instanceof Application:
|
Chris@0
|
55 $this->describeApplication($object, $options);
|
Chris@0
|
56 break;
|
Chris@0
|
57 default:
|
Chris@0
|
58 throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_class($object)));
|
Chris@0
|
59 }
|
Chris@0
|
60 }
|
Chris@0
|
61
|
Chris@0
|
62 /**
|
Chris@0
|
63 * Writes content to output.
|
Chris@0
|
64 *
|
Chris@0
|
65 * @param string $content
|
Chris@0
|
66 * @param bool $decorated
|
Chris@0
|
67 */
|
Chris@0
|
68 protected function write($content, $decorated = false)
|
Chris@0
|
69 {
|
Chris@0
|
70 $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW);
|
Chris@0
|
71 }
|
Chris@0
|
72
|
Chris@0
|
73 /**
|
Chris@0
|
74 * Describes an InputArgument instance.
|
Chris@0
|
75 *
|
Chris@0
|
76 * @param InputArgument $argument
|
Chris@0
|
77 * @param array $options
|
Chris@0
|
78 *
|
Chris@0
|
79 * @return string|mixed
|
Chris@0
|
80 */
|
Chris@0
|
81 abstract protected function describeInputArgument(InputArgument $argument, array $options = array());
|
Chris@0
|
82
|
Chris@0
|
83 /**
|
Chris@0
|
84 * Describes an InputOption instance.
|
Chris@0
|
85 *
|
Chris@0
|
86 * @param InputOption $option
|
Chris@0
|
87 * @param array $options
|
Chris@0
|
88 *
|
Chris@0
|
89 * @return string|mixed
|
Chris@0
|
90 */
|
Chris@0
|
91 abstract protected function describeInputOption(InputOption $option, array $options = array());
|
Chris@0
|
92
|
Chris@0
|
93 /**
|
Chris@0
|
94 * Describes an InputDefinition instance.
|
Chris@0
|
95 *
|
Chris@0
|
96 * @param InputDefinition $definition
|
Chris@0
|
97 * @param array $options
|
Chris@0
|
98 *
|
Chris@0
|
99 * @return string|mixed
|
Chris@0
|
100 */
|
Chris@0
|
101 abstract protected function describeInputDefinition(InputDefinition $definition, array $options = array());
|
Chris@0
|
102
|
Chris@0
|
103 /**
|
Chris@0
|
104 * Describes a Command instance.
|
Chris@0
|
105 *
|
Chris@0
|
106 * @param Command $command
|
Chris@0
|
107 * @param array $options
|
Chris@0
|
108 *
|
Chris@0
|
109 * @return string|mixed
|
Chris@0
|
110 */
|
Chris@0
|
111 abstract protected function describeCommand(Command $command, array $options = array());
|
Chris@0
|
112
|
Chris@0
|
113 /**
|
Chris@0
|
114 * Describes an Application instance.
|
Chris@0
|
115 *
|
Chris@0
|
116 * @param Application $application
|
Chris@0
|
117 * @param array $options
|
Chris@0
|
118 *
|
Chris@0
|
119 * @return string|mixed
|
Chris@0
|
120 */
|
Chris@0
|
121 abstract protected function describeApplication(Application $application, array $options = array());
|
Chris@0
|
122 }
|