xref: /plugin/combo/vendor/symfony/process/Exception/ProcessFailedException.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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