radarrplexorganizrnginxsonarrdashboardembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdall
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							152 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							152 lines
						
					
					
						
							3.9 KiB
						
					
					
				
								<?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;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * @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($verbosity = self::VERBOSITY_NORMAL, $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());
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * {@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 = array(
							 | 
						|
								            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');
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |