PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / symfony / console / Command / DumpCompletionCommand.php
independent-analytics / vendor / symfony / console / Command Last commit date
Command.php 2 years ago CompleteCommand.php 2 years ago DumpCompletionCommand.php 2 years ago HelpCommand.php 2 years ago LazyCommand.php 2 years ago ListCommand.php 2 years ago LockableTrait.php 2 years ago SignalableCommandInterface.php 2 years ago
DumpCompletionCommand.php
125 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 IAWP_SCOPED\Symfony\Component\Console\Command;
12
13 use IAWP_SCOPED\Symfony\Component\Console\Completion\CompletionInput;
14 use IAWP_SCOPED\Symfony\Component\Console\Completion\CompletionSuggestions;
15 use IAWP_SCOPED\Symfony\Component\Console\Input\InputArgument;
16 use IAWP_SCOPED\Symfony\Component\Console\Input\InputInterface;
17 use IAWP_SCOPED\Symfony\Component\Console\Input\InputOption;
18 use IAWP_SCOPED\Symfony\Component\Console\Output\ConsoleOutputInterface;
19 use IAWP_SCOPED\Symfony\Component\Console\Output\OutputInterface;
20 use IAWP_SCOPED\Symfony\Component\Process\Process;
21 /**
22 * Dumps the completion script for the current shell.
23 *
24 * @author Wouter de Jong <wouter@wouterj.nl>
25 * @internal
26 */
27 final class DumpCompletionCommand extends Command
28 {
29 protected static $defaultName = 'completion';
30 protected static $defaultDescription = 'Dump the shell completion script';
31 public function complete(CompletionInput $input, CompletionSuggestions $suggestions) : void
32 {
33 if ($input->mustSuggestArgumentValuesFor('shell')) {
34 $suggestions->suggestValues($this->getSupportedShells());
35 }
36 }
37 protected function configure()
38 {
39 $fullCommand = $_SERVER['PHP_SELF'];
40 $commandName = \basename($fullCommand);
41 $fullCommand = @\realpath($fullCommand) ?: $fullCommand;
42 $this->setHelp(<<<EOH
43 The <info>%command.name%</> command dumps the shell completion script required
44 to use shell autocompletion (currently only bash completion is supported).
45
46 <comment>Static installation
47 -------------------</>
48
49 Dump the script to a global completion file and restart your shell:
50
51 <info>%command.full_name% bash | sudo tee /etc/bash_completion.d/{$commandName}</>
52
53 Or dump the script to a local file and source it:
54
55 <info>%command.full_name% bash > completion.sh</>
56
57 <comment># source the file whenever you use the project</>
58 <info>source completion.sh</>
59
60 <comment># or add this line at the end of your "~/.bashrc" file:</>
61 <info>source /path/to/completion.sh</>
62
63 <comment>Dynamic installation
64 --------------------</>
65
66 Add this to the end of your shell configuration file (e.g. <info>"~/.bashrc"</>):
67
68 <info>eval "\$({$fullCommand} completion bash)"</>
69 EOH
70 )->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given')->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log');
71 }
72 protected function execute(InputInterface $input, OutputInterface $output) : int
73 {
74 $commandName = \basename($_SERVER['argv'][0]);
75 if ($input->getOption('debug')) {
76 $this->tailDebugLog($commandName, $output);
77 return 0;
78 }
79 $shell = $input->getArgument('shell') ?? self::guessShell();
80 $completionFile = __DIR__ . '/../Resources/completion.' . $shell;
81 if (!\file_exists($completionFile)) {
82 $supportedShells = $this->getSupportedShells();
83 if ($output instanceof ConsoleOutputInterface) {
84 $output = $output->getErrorOutput();
85 }
86 if ($shell) {
87 $output->writeln(\sprintf('<error>Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").</>', $shell, \implode('", "', $supportedShells)));
88 } else {
89 $output->writeln(\sprintf('<error>Shell not detected, Symfony shell completion only supports "%s").</>', \implode('", "', $supportedShells)));
90 }
91 return 2;
92 }
93 $output->write(\str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, $this->getApplication()->getVersion()], \file_get_contents($completionFile)));
94 return 0;
95 }
96 private static function guessShell() : string
97 {
98 return \basename($_SERVER['SHELL'] ?? '');
99 }
100 private function tailDebugLog(string $commandName, OutputInterface $output) : void
101 {
102 $debugFile = \sys_get_temp_dir() . '/sf_' . $commandName . '.log';
103 if (!\file_exists($debugFile)) {
104 \touch($debugFile);
105 }
106 $process = new Process(['tail', '-f', $debugFile], null, null, null, 0);
107 $process->run(function (string $type, string $line) use($output) : void {
108 $output->write($line);
109 });
110 }
111 /**
112 * @return string[]
113 */
114 private function getSupportedShells() : array
115 {
116 $shells = [];
117 foreach (new \DirectoryIterator(__DIR__ . '/../Resources/') as $file) {
118 if (\str_starts_with($file->getBasename(), 'completion.') && $file->isFile()) {
119 $shells[] = $file->getExtension();
120 }
121 }
122 return $shells;
123 }
124 }
125