| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| namespace think\process; |
|
|
| use think\Process; |
|
|
| class Builder |
| { |
| private $arguments; |
| private $cwd; |
| private $env = null; |
| private $input; |
| private $timeout = 60; |
| private $options = []; |
| private $inheritEnv = true; |
| private $prefix = []; |
| private $outputDisabled = false; |
|
|
| |
| |
| |
| |
| public function __construct(array $arguments = []) |
| { |
| $this->arguments = $arguments; |
| } |
|
|
| |
| |
| |
| |
| |
| public static function create(array $arguments = []) |
| { |
| return new static($arguments); |
| } |
|
|
| |
| |
| |
| |
| |
| public function add($argument) |
| { |
| $this->arguments[] = $argument; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function setPrefix($prefix) |
| { |
| $this->prefix = is_array($prefix) ? $prefix : [$prefix]; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function setArguments(array $arguments) |
| { |
| $this->arguments = $arguments; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function setWorkingDirectory($cwd) |
| { |
| $this->cwd = $cwd; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function inheritEnvironmentVariables($inheritEnv = true) |
| { |
| $this->inheritEnv = $inheritEnv; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function setEnv($name, $value) |
| { |
| $this->env[$name] = $value; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function addEnvironmentVariables(array $variables) |
| { |
| $this->env = array_replace($this->env, $variables); |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function setInput($input) |
| { |
| $this->input = Utils::validateInput(sprintf('%s::%s', __CLASS__, __FUNCTION__), $input); |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| public function setTimeout($timeout) |
| { |
| if (null === $timeout) { |
| $this->timeout = null; |
|
|
| return $this; |
| } |
|
|
| $timeout = (float) $timeout; |
|
|
| if ($timeout < 0) { |
| throw new \InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); |
| } |
|
|
| $this->timeout = $timeout; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function setOption($name, $value) |
| { |
| $this->options[$name] = $value; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| public function disableOutput() |
| { |
| $this->outputDisabled = true; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| public function enableOutput() |
| { |
| $this->outputDisabled = false; |
|
|
| return $this; |
| } |
|
|
| |
| |
| |
| |
| public function getProcess() |
| { |
| if (0 === count($this->prefix) && 0 === count($this->arguments)) { |
| throw new \LogicException('You must add() command arguments before calling getProcess().'); |
| } |
|
|
| $options = $this->options; |
|
|
| $arguments = array_merge($this->prefix, $this->arguments); |
| $script = implode(' ', array_map([__NAMESPACE__ . '\\Utils', 'escapeArgument'], $arguments)); |
|
|
| if ($this->inheritEnv) { |
| |
| $env = array_replace($_ENV, $_SERVER, $this->env); |
| } else { |
| $env = $this->env; |
| } |
|
|
| $process = new Process($script, $this->cwd, $env, $this->input, $this->timeout, $options); |
|
|
| if ($this->outputDisabled) { |
| $process->disableOutput(); |
| } |
|
|
| return $process; |
| } |
| } |
|
|