152 lines
3.1 KiB
PHP
152 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Process;
|
|
|
|
use Illuminate\Contracts\Process\ProcessResult as ProcessResultContract;
|
|
use Illuminate\Process\Exceptions\ProcessFailedException;
|
|
use Symfony\Component\Process\Process;
|
|
|
|
class ProcessResult implements ProcessResultContract
|
|
{
|
|
/**
|
|
* The underlying process instance.
|
|
*
|
|
* @var \Symfony\Component\Process\Process
|
|
*/
|
|
protected $process;
|
|
|
|
/**
|
|
* Create a new process result instance.
|
|
*
|
|
* @param \Symfony\Component\Process\Process $process
|
|
* @return void
|
|
*/
|
|
public function __construct(Process $process)
|
|
{
|
|
$this->process = $process;
|
|
}
|
|
|
|
/**
|
|
* Get the original command executed by the process.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function command()
|
|
{
|
|
return $this->process->getCommandLine();
|
|
}
|
|
|
|
/**
|
|
* Determine if the process was successful.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function successful()
|
|
{
|
|
return $this->process->isSuccessful();
|
|
}
|
|
|
|
/**
|
|
* Determine if the process failed.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function failed()
|
|
{
|
|
return ! $this->successful();
|
|
}
|
|
|
|
/**
|
|
* Get the exit code of the process.
|
|
*
|
|
* @return int|null
|
|
*/
|
|
public function exitCode()
|
|
{
|
|
return $this->process->getExitCode();
|
|
}
|
|
|
|
/**
|
|
* Get the standard output of the process.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function output()
|
|
{
|
|
return $this->process->getOutput();
|
|
}
|
|
|
|
/**
|
|
* Determine if the output contains the given string.
|
|
*
|
|
* @param string $output
|
|
* @return bool
|
|
*/
|
|
public function seeInOutput(string $output)
|
|
{
|
|
return str_contains($this->output(), $output);
|
|
}
|
|
|
|
/**
|
|
* Get the error output of the process.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function errorOutput()
|
|
{
|
|
return $this->process->getErrorOutput();
|
|
}
|
|
|
|
/**
|
|
* Determine if the error output contains the given string.
|
|
*
|
|
* @param string $output
|
|
* @return bool
|
|
*/
|
|
public function seeInErrorOutput(string $output)
|
|
{
|
|
return str_contains($this->errorOutput(), $output);
|
|
}
|
|
|
|
/**
|
|
* Throw an exception if the process failed.
|
|
*
|
|
* @param callable|null $callback
|
|
* @return $this
|
|
*
|
|
* @throws \Illuminate\Process\Exceptions\ProcessFailedException
|
|
*/
|
|
public function throw(?callable $callback = null)
|
|
{
|
|
if ($this->successful()) {
|
|
return $this;
|
|
}
|
|
|
|
$exception = new ProcessFailedException($this);
|
|
|
|
if ($callback) {
|
|
$callback($this, $exception);
|
|
}
|
|
|
|
throw $exception;
|
|
}
|
|
|
|
/**
|
|
* Throw an exception if the process failed and the given condition is true.
|
|
*
|
|
* @param bool $condition
|
|
* @param callable|null $callback
|
|
* @return $this
|
|
*
|
|
* @throws \Throwable
|
|
*/
|
|
public function throwIf(bool $condition, ?callable $callback = null)
|
|
{
|
|
if ($condition) {
|
|
return $this->throw($callback);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
}
|