first commit
This commit is contained in:
		
							
								
								
									
										45
									
								
								vendor/symfony/console/Output/BufferedOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/symfony/console/Output/BufferedOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| /** | ||||
|  * @author Jean-François Simon <contact@jfsimon.fr> | ||||
|  */ | ||||
| class BufferedOutput extends Output | ||||
| { | ||||
|     private $buffer = ''; | ||||
|  | ||||
|     /** | ||||
|      * Empties buffer and returns its content. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function fetch() | ||||
|     { | ||||
|         $content = $this->buffer; | ||||
|         $this->buffer = ''; | ||||
|  | ||||
|         return $content; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function doWrite($message, $newline) | ||||
|     { | ||||
|         $this->buffer .= $message; | ||||
|  | ||||
|         if ($newline) { | ||||
|             $this->buffer .= PHP_EOL; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										161
									
								
								vendor/symfony/console/Output/ConsoleOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										161
									
								
								vendor/symfony/console/Output/ConsoleOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,161 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
|  | ||||
| /** | ||||
|  * ConsoleOutput is the default class for all CLI output. It uses STDOUT and STDERR. | ||||
|  * | ||||
|  * This class is a convenient wrapper around `StreamOutput` for both STDOUT and STDERR. | ||||
|  * | ||||
|  *     $output = new ConsoleOutput(); | ||||
|  * | ||||
|  * This is equivalent to: | ||||
|  * | ||||
|  *     $output = new StreamOutput(fopen('php://stdout', 'w')); | ||||
|  *     $stdErr = new StreamOutput(fopen('php://stderr', 'w')); | ||||
|  * | ||||
|  * @author Fabien Potencier <fabien@symfony.com> | ||||
|  */ | ||||
| class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface | ||||
| { | ||||
|     private $stderr; | ||||
|     private $consoleSectionOutputs = []; | ||||
|  | ||||
|     /** | ||||
|      * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) | ||||
|      * @param bool|null                     $decorated Whether to decorate messages (null for auto-guessing) | ||||
|      * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) | ||||
|      */ | ||||
|     public function __construct(int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = null, OutputFormatterInterface $formatter = null) | ||||
|     { | ||||
|         parent::__construct($this->openOutputStream(), $verbosity, $decorated, $formatter); | ||||
|  | ||||
|         $actualDecorated = $this->isDecorated(); | ||||
|         $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); | ||||
|  | ||||
|         if (null === $decorated) { | ||||
|             $this->setDecorated($actualDecorated && $this->stderr->isDecorated()); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Creates a new output section. | ||||
|      */ | ||||
|     public function section(): ConsoleSectionOutput | ||||
|     { | ||||
|         return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setDecorated($decorated) | ||||
|     { | ||||
|         parent::setDecorated($decorated); | ||||
|         $this->stderr->setDecorated($decorated); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setFormatter(OutputFormatterInterface $formatter) | ||||
|     { | ||||
|         parent::setFormatter($formatter); | ||||
|         $this->stderr->setFormatter($formatter); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setVerbosity($level) | ||||
|     { | ||||
|         parent::setVerbosity($level); | ||||
|         $this->stderr->setVerbosity($level); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getErrorOutput() | ||||
|     { | ||||
|         return $this->stderr; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setErrorOutput(OutputInterface $error) | ||||
|     { | ||||
|         $this->stderr = $error; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if current environment supports writing console output to | ||||
|      * STDOUT. | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     protected function hasStdoutSupport() | ||||
|     { | ||||
|         return false === $this->isRunningOS400(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if current environment supports writing console output to | ||||
|      * STDERR. | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     protected function hasStderrSupport() | ||||
|     { | ||||
|         return false === $this->isRunningOS400(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Checks if current executing environment is IBM iSeries (OS400), which | ||||
|      * doesn't properly convert character-encodings between ASCII to EBCDIC. | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     private function isRunningOS400() | ||||
|     { | ||||
|         $checks = [ | ||||
|             \function_exists('php_uname') ? php_uname('s') : '', | ||||
|             getenv('OSTYPE'), | ||||
|             PHP_OS, | ||||
|         ]; | ||||
|  | ||||
|         return false !== stripos(implode(';', $checks), 'OS400'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return resource | ||||
|      */ | ||||
|     private function openOutputStream() | ||||
|     { | ||||
|         if (!$this->hasStdoutSupport()) { | ||||
|             return fopen('php://output', 'w'); | ||||
|         } | ||||
|  | ||||
|         return @fopen('php://stdout', 'w') ?: fopen('php://output', 'w'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return resource | ||||
|      */ | ||||
|     private function openErrorStream() | ||||
|     { | ||||
|         return fopen($this->hasStderrSupport() ? 'php://stderr' : 'php://output', 'w'); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										32
									
								
								vendor/symfony/console/Output/ConsoleOutputInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/symfony/console/Output/ConsoleOutputInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| /** | ||||
|  * ConsoleOutputInterface is the interface implemented by ConsoleOutput class. | ||||
|  * This adds information about stderr and section output stream. | ||||
|  * | ||||
|  * @author Dariusz Górecki <darek.krk@gmail.com> | ||||
|  * | ||||
|  * @method ConsoleSectionOutput section() Creates a new output section | ||||
|  */ | ||||
| interface ConsoleOutputInterface extends OutputInterface | ||||
| { | ||||
|     /** | ||||
|      * Gets the OutputInterface for errors. | ||||
|      * | ||||
|      * @return OutputInterface | ||||
|      */ | ||||
|     public function getErrorOutput(); | ||||
|  | ||||
|     public function setErrorOutput(OutputInterface $error); | ||||
| } | ||||
							
								
								
									
										141
									
								
								vendor/symfony/console/Output/ConsoleSectionOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								vendor/symfony/console/Output/ConsoleSectionOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,141 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
| use Symfony\Component\Console\Helper\Helper; | ||||
| use Symfony\Component\Console\Terminal; | ||||
|  | ||||
| /** | ||||
|  * @author Pierre du Plessis <pdples@gmail.com> | ||||
|  * @author Gabriel Ostrolucký <gabriel.ostrolucky@gmail.com> | ||||
|  */ | ||||
| class ConsoleSectionOutput extends StreamOutput | ||||
| { | ||||
|     private $content = []; | ||||
|     private $lines = 0; | ||||
|     private $sections; | ||||
|     private $terminal; | ||||
|  | ||||
|     /** | ||||
|      * @param resource               $stream | ||||
|      * @param ConsoleSectionOutput[] $sections | ||||
|      */ | ||||
|     public function __construct($stream, array &$sections, int $verbosity, bool $decorated, OutputFormatterInterface $formatter) | ||||
|     { | ||||
|         parent::__construct($stream, $verbosity, $decorated, $formatter); | ||||
|         array_unshift($sections, $this); | ||||
|         $this->sections = &$sections; | ||||
|         $this->terminal = new Terminal(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Clears previous output for this section. | ||||
|      * | ||||
|      * @param int $lines Number of lines to clear. If null, then the entire output of this section is cleared | ||||
|      */ | ||||
|     public function clear(int $lines = null) | ||||
|     { | ||||
|         if (empty($this->content) || !$this->isDecorated()) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if ($lines) { | ||||
|             array_splice($this->content, -($lines * 2)); // Multiply lines by 2 to cater for each new line added between content | ||||
|         } else { | ||||
|             $lines = $this->lines; | ||||
|             $this->content = []; | ||||
|         } | ||||
|  | ||||
|         $this->lines -= $lines; | ||||
|  | ||||
|         parent::doWrite($this->popStreamContentUntilCurrentSection($lines), false); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Overwrites the previous output with a new message. | ||||
|      * | ||||
|      * @param array|string $message | ||||
|      */ | ||||
|     public function overwrite($message) | ||||
|     { | ||||
|         $this->clear(); | ||||
|         $this->writeln($message); | ||||
|     } | ||||
|  | ||||
|     public function getContent(): string | ||||
|     { | ||||
|         return implode('', $this->content); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @internal | ||||
|      */ | ||||
|     public function addContent(string $input) | ||||
|     { | ||||
|         foreach (explode(PHP_EOL, $input) as $lineContent) { | ||||
|             $this->lines += ceil($this->getDisplayLength($lineContent) / $this->terminal->getWidth()) ?: 1; | ||||
|             $this->content[] = $lineContent; | ||||
|             $this->content[] = PHP_EOL; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function doWrite($message, $newline) | ||||
|     { | ||||
|         if (!$this->isDecorated()) { | ||||
|             return parent::doWrite($message, $newline); | ||||
|         } | ||||
|  | ||||
|         $erasedContent = $this->popStreamContentUntilCurrentSection(); | ||||
|  | ||||
|         $this->addContent($message); | ||||
|  | ||||
|         parent::doWrite($message, true); | ||||
|         parent::doWrite($erasedContent, false); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * At initial stage, cursor is at the end of stream output. This method makes cursor crawl upwards until it hits | ||||
|      * current section. Then it erases content it crawled through. Optionally, it erases part of current section too. | ||||
|      */ | ||||
|     private function popStreamContentUntilCurrentSection(int $numberOfLinesToClearFromCurrentSection = 0): string | ||||
|     { | ||||
|         $numberOfLinesToClear = $numberOfLinesToClearFromCurrentSection; | ||||
|         $erasedContent = []; | ||||
|  | ||||
|         foreach ($this->sections as $section) { | ||||
|             if ($section === $this) { | ||||
|                 break; | ||||
|             } | ||||
|  | ||||
|             $numberOfLinesToClear += $section->lines; | ||||
|             $erasedContent[] = $section->getContent(); | ||||
|         } | ||||
|  | ||||
|         if ($numberOfLinesToClear > 0) { | ||||
|             // move cursor up n lines | ||||
|             parent::doWrite(sprintf("\x1b[%dA", $numberOfLinesToClear), false); | ||||
|             // erase to end of screen | ||||
|             parent::doWrite("\x1b[0J", false); | ||||
|         } | ||||
|  | ||||
|         return implode('', array_reverse($erasedContent)); | ||||
|     } | ||||
|  | ||||
|     private function getDisplayLength(string $text): string | ||||
|     { | ||||
|         return Helper::strlenWithoutDecoration($this->getFormatter(), str_replace("\t", '        ', $text)); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										123
									
								
								vendor/symfony/console/Output/NullOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								vendor/symfony/console/Output/NullOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,123 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Formatter\OutputFormatter; | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
|  | ||||
| /** | ||||
|  * NullOutput suppresses all output. | ||||
|  * | ||||
|  *     $output = new NullOutput(); | ||||
|  * | ||||
|  * @author Fabien Potencier <fabien@symfony.com> | ||||
|  * @author Tobias Schultze <http://tobion.de> | ||||
|  */ | ||||
| class NullOutput implements OutputInterface | ||||
| { | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setFormatter(OutputFormatterInterface $formatter) | ||||
|     { | ||||
|         // do nothing | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getFormatter() | ||||
|     { | ||||
|         // to comply with the interface we must return a OutputFormatterInterface | ||||
|         return new OutputFormatter(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setDecorated($decorated) | ||||
|     { | ||||
|         // do nothing | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isDecorated() | ||||
|     { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setVerbosity($level) | ||||
|     { | ||||
|         // do nothing | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getVerbosity() | ||||
|     { | ||||
|         return self::VERBOSITY_QUIET; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isQuiet() | ||||
|     { | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isVerbose() | ||||
|     { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isVeryVerbose() | ||||
|     { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isDebug() | ||||
|     { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function writeln($messages, $options = self::OUTPUT_NORMAL) | ||||
|     { | ||||
|         // do nothing | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) | ||||
|     { | ||||
|         // do nothing | ||||
|     } | ||||
| } | ||||
							
								
								
									
										177
									
								
								vendor/symfony/console/Output/Output.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								vendor/symfony/console/Output/Output.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,177 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Formatter\OutputFormatter; | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
|  | ||||
| /** | ||||
|  * Base class for output classes. | ||||
|  * | ||||
|  * There are five levels of verbosity: | ||||
|  * | ||||
|  *  * normal: no option passed (normal output) | ||||
|  *  * verbose: -v (more output) | ||||
|  *  * very verbose: -vv (highly extended output) | ||||
|  *  * debug: -vvv (all debug output) | ||||
|  *  * quiet: -q (no output) | ||||
|  * | ||||
|  * @author Fabien Potencier <fabien@symfony.com> | ||||
|  */ | ||||
| abstract class Output implements OutputInterface | ||||
| { | ||||
|     private $verbosity; | ||||
|     private $formatter; | ||||
|  | ||||
|     /** | ||||
|      * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) | ||||
|      * @param bool                          $decorated Whether to decorate messages | ||||
|      * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) | ||||
|      */ | ||||
|     public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null) | ||||
|     { | ||||
|         $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity; | ||||
|         $this->formatter = $formatter ?: new OutputFormatter(); | ||||
|         $this->formatter->setDecorated($decorated); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setFormatter(OutputFormatterInterface $formatter) | ||||
|     { | ||||
|         $this->formatter = $formatter; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getFormatter() | ||||
|     { | ||||
|         return $this->formatter; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setDecorated($decorated) | ||||
|     { | ||||
|         $this->formatter->setDecorated($decorated); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isDecorated() | ||||
|     { | ||||
|         return $this->formatter->isDecorated(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function setVerbosity($level) | ||||
|     { | ||||
|         $this->verbosity = (int) $level; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function getVerbosity() | ||||
|     { | ||||
|         return $this->verbosity; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isQuiet() | ||||
|     { | ||||
|         return self::VERBOSITY_QUIET === $this->verbosity; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isVerbose() | ||||
|     { | ||||
|         return self::VERBOSITY_VERBOSE <= $this->verbosity; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isVeryVerbose() | ||||
|     { | ||||
|         return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function isDebug() | ||||
|     { | ||||
|         return self::VERBOSITY_DEBUG <= $this->verbosity; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function writeln($messages, $options = self::OUTPUT_NORMAL) | ||||
|     { | ||||
|         $this->write($messages, true, $options); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) | ||||
|     { | ||||
|         if (!is_iterable($messages)) { | ||||
|             $messages = [$messages]; | ||||
|         } | ||||
|  | ||||
|         $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; | ||||
|         $type = $types & $options ?: self::OUTPUT_NORMAL; | ||||
|  | ||||
|         $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; | ||||
|         $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; | ||||
|  | ||||
|         if ($verbosity > $this->getVerbosity()) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         foreach ($messages as $message) { | ||||
|             switch ($type) { | ||||
|                 case OutputInterface::OUTPUT_NORMAL: | ||||
|                     $message = $this->formatter->format($message); | ||||
|                     break; | ||||
|                 case OutputInterface::OUTPUT_RAW: | ||||
|                     break; | ||||
|                 case OutputInterface::OUTPUT_PLAIN: | ||||
|                     $message = strip_tags($this->formatter->format($message)); | ||||
|                     break; | ||||
|             } | ||||
|  | ||||
|             $this->doWrite($message, $newline); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Writes a message to the output. | ||||
|      * | ||||
|      * @param string $message A message to write to the output | ||||
|      * @param bool   $newline Whether to add a newline or not | ||||
|      */ | ||||
|     abstract protected function doWrite($message, $newline); | ||||
| } | ||||
							
								
								
									
										114
									
								
								vendor/symfony/console/Output/OutputInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								vendor/symfony/console/Output/OutputInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,114 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
|  | ||||
| /** | ||||
|  * OutputInterface is the interface implemented by all Output classes. | ||||
|  * | ||||
|  * @author Fabien Potencier <fabien@symfony.com> | ||||
|  */ | ||||
| interface OutputInterface | ||||
| { | ||||
|     const VERBOSITY_QUIET = 16; | ||||
|     const VERBOSITY_NORMAL = 32; | ||||
|     const VERBOSITY_VERBOSE = 64; | ||||
|     const VERBOSITY_VERY_VERBOSE = 128; | ||||
|     const VERBOSITY_DEBUG = 256; | ||||
|  | ||||
|     const OUTPUT_NORMAL = 1; | ||||
|     const OUTPUT_RAW = 2; | ||||
|     const OUTPUT_PLAIN = 4; | ||||
|  | ||||
|     /** | ||||
|      * Writes a message to the output. | ||||
|      * | ||||
|      * @param string|iterable $messages The message as an iterable of strings or a single string | ||||
|      * @param bool            $newline  Whether to add a newline | ||||
|      * @param int             $options  A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL | ||||
|      */ | ||||
|     public function write($messages, $newline = false, $options = 0); | ||||
|  | ||||
|     /** | ||||
|      * Writes a message to the output and adds a newline at the end. | ||||
|      * | ||||
|      * @param string|iterable $messages The message as an iterable of strings or a single string | ||||
|      * @param int             $options  A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL | ||||
|      */ | ||||
|     public function writeln($messages, $options = 0); | ||||
|  | ||||
|     /** | ||||
|      * Sets the verbosity of the output. | ||||
|      * | ||||
|      * @param int $level The level of verbosity (one of the VERBOSITY constants) | ||||
|      */ | ||||
|     public function setVerbosity($level); | ||||
|  | ||||
|     /** | ||||
|      * Gets the current verbosity of the output. | ||||
|      * | ||||
|      * @return int The current level of verbosity (one of the VERBOSITY constants) | ||||
|      */ | ||||
|     public function getVerbosity(); | ||||
|  | ||||
|     /** | ||||
|      * Returns whether verbosity is quiet (-q). | ||||
|      * | ||||
|      * @return bool true if verbosity is set to VERBOSITY_QUIET, false otherwise | ||||
|      */ | ||||
|     public function isQuiet(); | ||||
|  | ||||
|     /** | ||||
|      * Returns whether verbosity is verbose (-v). | ||||
|      * | ||||
|      * @return bool true if verbosity is set to VERBOSITY_VERBOSE, false otherwise | ||||
|      */ | ||||
|     public function isVerbose(); | ||||
|  | ||||
|     /** | ||||
|      * Returns whether verbosity is very verbose (-vv). | ||||
|      * | ||||
|      * @return bool true if verbosity is set to VERBOSITY_VERY_VERBOSE, false otherwise | ||||
|      */ | ||||
|     public function isVeryVerbose(); | ||||
|  | ||||
|     /** | ||||
|      * Returns whether verbosity is debug (-vvv). | ||||
|      * | ||||
|      * @return bool true if verbosity is set to VERBOSITY_DEBUG, false otherwise | ||||
|      */ | ||||
|     public function isDebug(); | ||||
|  | ||||
|     /** | ||||
|      * Sets the decorated flag. | ||||
|      * | ||||
|      * @param bool $decorated Whether to decorate the messages | ||||
|      */ | ||||
|     public function setDecorated($decorated); | ||||
|  | ||||
|     /** | ||||
|      * Gets the decorated flag. | ||||
|      * | ||||
|      * @return bool true if the output will decorate messages, false otherwise | ||||
|      */ | ||||
|     public function isDecorated(); | ||||
|  | ||||
|     public function setFormatter(OutputFormatterInterface $formatter); | ||||
|  | ||||
|     /** | ||||
|      * Returns current output formatter instance. | ||||
|      * | ||||
|      * @return OutputFormatterInterface | ||||
|      */ | ||||
|     public function getFormatter(); | ||||
| } | ||||
							
								
								
									
										124
									
								
								vendor/symfony/console/Output/StreamOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								vendor/symfony/console/Output/StreamOutput.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| <?php | ||||
|  | ||||
| /* | ||||
|  * This file is part of the Symfony package. | ||||
|  * | ||||
|  * (c) Fabien Potencier <fabien@symfony.com> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| namespace Symfony\Component\Console\Output; | ||||
|  | ||||
| use Symfony\Component\Console\Exception\InvalidArgumentException; | ||||
| use Symfony\Component\Console\Exception\RuntimeException; | ||||
| use Symfony\Component\Console\Formatter\OutputFormatterInterface; | ||||
|  | ||||
| /** | ||||
|  * StreamOutput writes the output to a given stream. | ||||
|  * | ||||
|  * Usage: | ||||
|  * | ||||
|  *     $output = new StreamOutput(fopen('php://stdout', 'w')); | ||||
|  * | ||||
|  * As `StreamOutput` can use any stream, you can also use a file: | ||||
|  * | ||||
|  *     $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); | ||||
|  * | ||||
|  * @author Fabien Potencier <fabien@symfony.com> | ||||
|  */ | ||||
| class StreamOutput extends Output | ||||
| { | ||||
|     private $stream; | ||||
|  | ||||
|     /** | ||||
|      * @param resource                      $stream    A stream resource | ||||
|      * @param int                           $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) | ||||
|      * @param bool|null                     $decorated Whether to decorate messages (null for auto-guessing) | ||||
|      * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) | ||||
|      * | ||||
|      * @throws InvalidArgumentException When first argument is not a real stream | ||||
|      */ | ||||
|     public function __construct($stream, int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = null, OutputFormatterInterface $formatter = null) | ||||
|     { | ||||
|         if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) { | ||||
|             throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.'); | ||||
|         } | ||||
|  | ||||
|         $this->stream = $stream; | ||||
|  | ||||
|         if (null === $decorated) { | ||||
|             $decorated = $this->hasColorSupport(); | ||||
|         } | ||||
|  | ||||
|         parent::__construct($verbosity, $decorated, $formatter); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets the stream attached to this StreamOutput instance. | ||||
|      * | ||||
|      * @return resource A stream resource | ||||
|      */ | ||||
|     public function getStream() | ||||
|     { | ||||
|         return $this->stream; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * {@inheritdoc} | ||||
|      */ | ||||
|     protected function doWrite($message, $newline) | ||||
|     { | ||||
|         if ($newline) { | ||||
|             $message .= PHP_EOL; | ||||
|         } | ||||
|  | ||||
|         if (false === @fwrite($this->stream, $message)) { | ||||
|             // should never happen | ||||
|             throw new RuntimeException('Unable to write output.'); | ||||
|         } | ||||
|  | ||||
|         fflush($this->stream); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns true if the stream supports colorization. | ||||
|      * | ||||
|      * Colorization is disabled if not supported by the stream: | ||||
|      * | ||||
|      * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo | ||||
|      * terminals via named pipes, so we can only check the environment. | ||||
|      * | ||||
|      * Reference: Composer\XdebugHandler\Process::supportsColor | ||||
|      * https://github.com/composer/xdebug-handler | ||||
|      * | ||||
|      * @return bool true if the stream supports colorization, false otherwise | ||||
|      */ | ||||
|     protected function hasColorSupport() | ||||
|     { | ||||
|         if ('Hyper' === getenv('TERM_PROGRAM')) { | ||||
|             return true; | ||||
|         } | ||||
|  | ||||
|         if (\DIRECTORY_SEPARATOR === '\\') { | ||||
|             return (\function_exists('sapi_windows_vt100_support') | ||||
|                 && @sapi_windows_vt100_support($this->stream)) | ||||
|                 || false !== getenv('ANSICON') | ||||
|                 || 'ON' === getenv('ConEmuANSI') | ||||
|                 || 'xterm' === getenv('TERM'); | ||||
|         } | ||||
|  | ||||
|         if (\function_exists('stream_isatty')) { | ||||
|             return @stream_isatty($this->stream); | ||||
|         } | ||||
|  | ||||
|         if (\function_exists('posix_isatty')) { | ||||
|             return @posix_isatty($this->stream); | ||||
|         } | ||||
|  | ||||
|         $stat = @fstat($this->stream); | ||||
|         // Check if formatted mode is S_IFCHR | ||||
|         return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user