1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau/* 4*04fd306cSNickeau * This file is part of the Symfony package. 5*04fd306cSNickeau * 6*04fd306cSNickeau * (c) Fabien Potencier <fabien@symfony.com> 7*04fd306cSNickeau * 8*04fd306cSNickeau * For the full copyright and license information, please view the LICENSE 9*04fd306cSNickeau * file that was distributed with this source code. 10*04fd306cSNickeau */ 11*04fd306cSNickeau 12*04fd306cSNickeaunamespace Symfony\Component\Process\Exception; 13*04fd306cSNickeau 14*04fd306cSNickeauuse Symfony\Component\Process\Process; 15*04fd306cSNickeau 16*04fd306cSNickeau/** 17*04fd306cSNickeau * Exception for failed processes. 18*04fd306cSNickeau * 19*04fd306cSNickeau * @author Johannes M. Schmitt <schmittjoh@gmail.com> 20*04fd306cSNickeau */ 21*04fd306cSNickeauclass ProcessFailedException extends RuntimeException 22*04fd306cSNickeau{ 23*04fd306cSNickeau private $process; 24*04fd306cSNickeau 25*04fd306cSNickeau public function __construct(Process $process) 26*04fd306cSNickeau { 27*04fd306cSNickeau if ($process->isSuccessful()) { 28*04fd306cSNickeau throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); 29*04fd306cSNickeau } 30*04fd306cSNickeau 31*04fd306cSNickeau $error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", 32*04fd306cSNickeau $process->getCommandLine(), 33*04fd306cSNickeau $process->getExitCode(), 34*04fd306cSNickeau $process->getExitCodeText(), 35*04fd306cSNickeau $process->getWorkingDirectory() 36*04fd306cSNickeau ); 37*04fd306cSNickeau 38*04fd306cSNickeau if (!$process->isOutputDisabled()) { 39*04fd306cSNickeau $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", 40*04fd306cSNickeau $process->getOutput(), 41*04fd306cSNickeau $process->getErrorOutput() 42*04fd306cSNickeau ); 43*04fd306cSNickeau } 44*04fd306cSNickeau 45*04fd306cSNickeau parent::__construct($error); 46*04fd306cSNickeau 47*04fd306cSNickeau $this->process = $process; 48*04fd306cSNickeau } 49*04fd306cSNickeau 50*04fd306cSNickeau public function getProcess() 51*04fd306cSNickeau { 52*04fd306cSNickeau return $this->process; 53*04fd306cSNickeau } 54*04fd306cSNickeau} 55