Laravel version update
Laravel version update
This commit is contained in:
		
							
								
								
									
										139
									
								
								vendor/sebastian/environment/src/Console.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										139
									
								
								vendor/sebastian/environment/src/Console.php
									
									
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| <?php | ||||
| /* | ||||
|  * This file is part of the Environment package. | ||||
|  * This file is part of sebastian/environment. | ||||
|  * | ||||
|  * (c) Sebastian Bergmann <sebastian@phpunit.de> | ||||
|  * | ||||
| @@ -8,14 +8,25 @@ | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
|  | ||||
| declare(strict_types=1); | ||||
|  | ||||
| namespace SebastianBergmann\Environment; | ||||
|  | ||||
| /** | ||||
|  */ | ||||
| class Console | ||||
| final class Console | ||||
| { | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     const STDIN  = 0; | ||||
|  | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     const STDOUT = 1; | ||||
|  | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     const STDERR = 2; | ||||
|  | ||||
|     /** | ||||
| @@ -23,17 +34,19 @@ class Console | ||||
|      * | ||||
|      * This code has been copied and adapted from | ||||
|      * Symfony\Component\Console\Output\OutputStream. | ||||
|      * | ||||
|      * @return bool | ||||
|      */ | ||||
|     public function hasColorSupport() | ||||
|     public function hasColorSupport(): bool | ||||
|     { | ||||
|         if (DIRECTORY_SEPARATOR == '\\') { | ||||
|             return false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM'); | ||||
|         if ($this->isWindows()) { | ||||
|             // @codeCoverageIgnoreStart | ||||
|             return false !== \getenv('ANSICON') || 'ON' === \getenv('ConEmuANSI') || 'xterm' === \getenv('TERM'); | ||||
|             // @codeCoverageIgnoreEnd | ||||
|         } | ||||
|  | ||||
|         if (!defined('STDOUT')) { | ||||
|         if (!\defined('STDOUT')) { | ||||
|             // @codeCoverageIgnoreStart | ||||
|             return false; | ||||
|             // @codeCoverageIgnoreEnd | ||||
|         } | ||||
|  | ||||
|         return $this->isInteractive(STDOUT); | ||||
| @@ -42,55 +55,48 @@ class Console | ||||
|     /** | ||||
|      * Returns the number of columns of the terminal. | ||||
|      * | ||||
|      * @return int | ||||
|      * @codeCoverageIgnore | ||||
|      */ | ||||
|     public function getNumberOfColumns() | ||||
|     public function getNumberOfColumns(): int | ||||
|     { | ||||
|         if (DIRECTORY_SEPARATOR == '\\') { | ||||
|             $columns = 80; | ||||
|  | ||||
|             if (preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim(getenv('ANSICON')), $matches)) { | ||||
|                 $columns = $matches[1]; | ||||
|             } elseif (function_exists('proc_open')) { | ||||
|                 $process = proc_open( | ||||
|                     'mode CON', | ||||
|                     array( | ||||
|                         1 => array('pipe', 'w'), | ||||
|                         2 => array('pipe', 'w') | ||||
|                     ), | ||||
|                     $pipes, | ||||
|                     null, | ||||
|                     null, | ||||
|                     array('suppress_errors' => true) | ||||
|                 ); | ||||
|  | ||||
|                 if (is_resource($process)) { | ||||
|                     $info = stream_get_contents($pipes[1]); | ||||
|  | ||||
|                     fclose($pipes[1]); | ||||
|                     fclose($pipes[2]); | ||||
|                     proc_close($process); | ||||
|  | ||||
|                     if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { | ||||
|                         $columns = $matches[2]; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return $columns - 1; | ||||
|         if ($this->isWindows()) { | ||||
|             return $this->getNumberOfColumnsWindows(); | ||||
|         } | ||||
|  | ||||
|         if (!$this->isInteractive(self::STDIN)) { | ||||
|             return 80; | ||||
|         } | ||||
|  | ||||
|         if (function_exists('shell_exec') && preg_match('#\d+ (\d+)#', shell_exec('stty size'), $match) === 1) { | ||||
|         return $this->getNumberOfColumnsInteractive(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns if the file descriptor is an interactive terminal or not. | ||||
|      * | ||||
|      * @param int|resource $fileDescriptor | ||||
|      */ | ||||
|     public function isInteractive($fileDescriptor = self::STDOUT): bool | ||||
|     { | ||||
|         return \function_exists('posix_isatty') && @\posix_isatty($fileDescriptor); | ||||
|     } | ||||
|  | ||||
|     private function isWindows(): bool | ||||
|     { | ||||
|         return DIRECTORY_SEPARATOR === '\\'; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @codeCoverageIgnore | ||||
|      */ | ||||
|     private function getNumberOfColumnsInteractive(): int | ||||
|     { | ||||
|         if (\function_exists('shell_exec') && \preg_match('#\d+ (\d+)#', \shell_exec('stty size') ?? '', $match) === 1) { | ||||
|             if ((int) $match[1] > 0) { | ||||
|                 return (int) $match[1]; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if (function_exists('shell_exec') && preg_match('#columns = (\d+);#', shell_exec('stty'), $match) === 1) { | ||||
|         if (\function_exists('shell_exec') && \preg_match('#columns = (\d+);#', \shell_exec('stty') ?? '', $match) === 1) { | ||||
|             if ((int) $match[1] > 0) { | ||||
|                 return (int) $match[1]; | ||||
|             } | ||||
| @@ -100,14 +106,41 @@ class Console | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Returns if the file descriptor is an interactive terminal or not. | ||||
|      * | ||||
|      * @param int|resource $fileDescriptor | ||||
|      * | ||||
|      * @return bool | ||||
|      * @codeCoverageIgnore | ||||
|      */ | ||||
|     public function isInteractive($fileDescriptor = self::STDOUT) | ||||
|     private function getNumberOfColumnsWindows(): int | ||||
|     { | ||||
|         return function_exists('posix_isatty') && @posix_isatty($fileDescriptor); | ||||
|         $ansicon = \getenv('ANSICON'); | ||||
|         $columns = 80; | ||||
|  | ||||
|         if (\is_string($ansicon) && \preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', \trim($ansicon), $matches)) { | ||||
|             $columns = $matches[1]; | ||||
|         } elseif (\function_exists('proc_open')) { | ||||
|             $process = \proc_open( | ||||
|                 'mode CON', | ||||
|                 [ | ||||
|                     1 => ['pipe', 'w'], | ||||
|                     2 => ['pipe', 'w'] | ||||
|                 ], | ||||
|                 $pipes, | ||||
|                 null, | ||||
|                 null, | ||||
|                 ['suppress_errors' => true] | ||||
|             ); | ||||
|  | ||||
|             if (\is_resource($process)) { | ||||
|                 $info = \stream_get_contents($pipes[1]); | ||||
|  | ||||
|                 \fclose($pipes[1]); | ||||
|                 \fclose($pipes[2]); | ||||
|                 \proc_close($process); | ||||
|  | ||||
|                 if (\preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { | ||||
|                     $columns = $matches[2]; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $columns - 1; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Manish Verma
					Manish Verma