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@17
|
16 use Symfony\Component\Console\Exception\InvalidArgumentException;
|
Chris@0
|
17 use Symfony\Component\Console\Input\InputArgument;
|
Chris@0
|
18 use Symfony\Component\Console\Input\InputDefinition;
|
Chris@0
|
19 use Symfony\Component\Console\Input\InputOption;
|
Chris@0
|
20 use Symfony\Component\Console\Output\OutputInterface;
|
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@17
|
37 public function describe(OutputInterface $output, $object, array $options = [])
|
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@17
|
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 * @return string|mixed
|
Chris@0
|
77 */
|
Chris@17
|
78 abstract protected function describeInputArgument(InputArgument $argument, array $options = []);
|
Chris@0
|
79
|
Chris@0
|
80 /**
|
Chris@0
|
81 * Describes an InputOption instance.
|
Chris@0
|
82 *
|
Chris@0
|
83 * @return string|mixed
|
Chris@0
|
84 */
|
Chris@17
|
85 abstract protected function describeInputOption(InputOption $option, array $options = []);
|
Chris@0
|
86
|
Chris@0
|
87 /**
|
Chris@0
|
88 * Describes an InputDefinition instance.
|
Chris@0
|
89 *
|
Chris@0
|
90 * @return string|mixed
|
Chris@0
|
91 */
|
Chris@17
|
92 abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []);
|
Chris@0
|
93
|
Chris@0
|
94 /**
|
Chris@0
|
95 * Describes a Command instance.
|
Chris@0
|
96 *
|
Chris@0
|
97 * @return string|mixed
|
Chris@0
|
98 */
|
Chris@17
|
99 abstract protected function describeCommand(Command $command, array $options = []);
|
Chris@0
|
100
|
Chris@0
|
101 /**
|
Chris@0
|
102 * Describes an Application instance.
|
Chris@0
|
103 *
|
Chris@0
|
104 * @return string|mixed
|
Chris@0
|
105 */
|
Chris@17
|
106 abstract protected function describeApplication(Application $application, array $options = []);
|
Chris@0
|
107 }
|