PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.8.2
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.8.2
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / vendor / prefixed / symfony / console / Descriptor / JsonDescriptor.php
matomo / app / vendor / prefixed / symfony / console / Descriptor Last commit date
ApplicationDescription.php 1 year ago Descriptor.php 1 year ago DescriptorInterface.php 2 years ago JsonDescriptor.php 1 year ago MarkdownDescriptor.php 1 year ago TextDescriptor.php 1 year ago XmlDescriptor.php 1 year ago
JsonDescriptor.php
128 lines
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 namespace Matomo\Dependencies\Symfony\Component\Console\Descriptor;
12
13 use Matomo\Dependencies\Symfony\Component\Console\Application;
14 use Matomo\Dependencies\Symfony\Component\Console\Command\Command;
15 use Matomo\Dependencies\Symfony\Component\Console\Input\InputArgument;
16 use Matomo\Dependencies\Symfony\Component\Console\Input\InputDefinition;
17 use Matomo\Dependencies\Symfony\Component\Console\Input\InputOption;
18 /**
19 * JSON descriptor.
20 *
21 * @author Jean-François Simon <contact@jfsimon.fr>
22 *
23 * @internal
24 */
25 class JsonDescriptor extends Descriptor
26 {
27 /**
28 * {@inheritdoc}
29 */
30 protected function describeInputArgument(InputArgument $argument, array $options = [])
31 {
32 $this->writeData($this->getInputArgumentData($argument), $options);
33 }
34 /**
35 * {@inheritdoc}
36 */
37 protected function describeInputOption(InputOption $option, array $options = [])
38 {
39 $this->writeData($this->getInputOptionData($option), $options);
40 if ($option->isNegatable()) {
41 $this->writeData($this->getInputOptionData($option, \true), $options);
42 }
43 }
44 /**
45 * {@inheritdoc}
46 */
47 protected function describeInputDefinition(InputDefinition $definition, array $options = [])
48 {
49 $this->writeData($this->getInputDefinitionData($definition), $options);
50 }
51 /**
52 * {@inheritdoc}
53 */
54 protected function describeCommand(Command $command, array $options = [])
55 {
56 $this->writeData($this->getCommandData($command, $options['short'] ?? \false), $options);
57 }
58 /**
59 * {@inheritdoc}
60 */
61 protected function describeApplication(Application $application, array $options = [])
62 {
63 $describedNamespace = $options['namespace'] ?? null;
64 $description = new ApplicationDescription($application, $describedNamespace, \true);
65 $commands = [];
66 foreach ($description->getCommands() as $command) {
67 $commands[] = $this->getCommandData($command, $options['short'] ?? \false);
68 }
69 $data = [];
70 if ('UNKNOWN' !== $application->getName()) {
71 $data['application']['name'] = $application->getName();
72 if ('UNKNOWN' !== $application->getVersion()) {
73 $data['application']['version'] = $application->getVersion();
74 }
75 }
76 $data['commands'] = $commands;
77 if ($describedNamespace) {
78 $data['namespace'] = $describedNamespace;
79 } else {
80 $data['namespaces'] = array_values($description->getNamespaces());
81 }
82 $this->writeData($data, $options);
83 }
84 /**
85 * Writes data as json.
86 */
87 private function writeData(array $data, array $options)
88 {
89 $flags = $options['json_encoding'] ?? 0;
90 $this->write(json_encode($data, $flags));
91 }
92 private function getInputArgumentData(InputArgument $argument) : array
93 {
94 return ['name' => $argument->getName(), 'is_required' => $argument->isRequired(), 'is_array' => $argument->isArray(), 'description' => preg_replace('/\\s*[\\r\\n]\\s*/', ' ', $argument->getDescription()), 'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault()];
95 }
96 private function getInputOptionData(InputOption $option, bool $negated = \false) : array
97 {
98 return $negated ? ['name' => '--no-' . $option->getName(), 'shortcut' => '', 'accept_value' => \false, 'is_value_required' => \false, 'is_multiple' => \false, 'description' => 'Negate the "--' . $option->getName() . '" option', 'default' => \false] : ['name' => '--' . $option->getName(), 'shortcut' => $option->getShortcut() ? '-' . str_replace('|', '|-', $option->getShortcut()) : '', 'accept_value' => $option->acceptValue(), 'is_value_required' => $option->isValueRequired(), 'is_multiple' => $option->isArray(), 'description' => preg_replace('/\\s*[\\r\\n]\\s*/', ' ', $option->getDescription()), 'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault()];
99 }
100 private function getInputDefinitionData(InputDefinition $definition) : array
101 {
102 $inputArguments = [];
103 foreach ($definition->getArguments() as $name => $argument) {
104 $inputArguments[$name] = $this->getInputArgumentData($argument);
105 }
106 $inputOptions = [];
107 foreach ($definition->getOptions() as $name => $option) {
108 $inputOptions[$name] = $this->getInputOptionData($option);
109 if ($option->isNegatable()) {
110 $inputOptions['no-' . $name] = $this->getInputOptionData($option, \true);
111 }
112 }
113 return ['arguments' => $inputArguments, 'options' => $inputOptions];
114 }
115 private function getCommandData(Command $command, bool $short = \false) : array
116 {
117 $data = ['name' => $command->getName(), 'description' => $command->getDescription()];
118 if ($short) {
119 $data += ['usage' => $command->getAliases()];
120 } else {
121 $command->mergeApplicationDefinition(\false);
122 $data += ['usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), 'help' => $command->getProcessedHelp(), 'definition' => $this->getInputDefinitionData($command->getDefinition())];
123 }
124 $data['hidden'] = $command->isHidden();
125 return $data;
126 }
127 }
128