1
0
Fork 0
composer/src/Composer/Util/ProcessExecutor.php

81 lines
1.8 KiB
PHP
Raw Normal View History

<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Util;
use Symfony\Component\Process\Process;
/**
* @author Robert Schönthal <seroscho@googlemail.com>
*/
class ProcessExecutor
{
2012-02-27 10:35:26 +00:00
static protected $timeout = 300;
protected $errorOutput;
/**
* runs a process on the commandline
*
* @param string $command the command to execute
* @param null $output the output will be written into this var if passed
* @param string $cwd the working directory
* @return int statuscode
*/
public function execute($command, &$output = null, $cwd = null)
{
2012-01-22 19:08:20 +00:00
$captureOutput = count(func_get_args()) > 1;
$this->errorOutput = null;
$process = new Process($command, $cwd, null, null, static::getTimeout());
2012-01-22 19:08:20 +00:00
$process->run(function($type, $buffer) use ($captureOutput) {
if ($captureOutput) {
return;
}
echo $buffer;
});
2012-01-22 19:08:20 +00:00
if ($captureOutput) {
$output = $process->getOutput();
}
$this->errorOutput = $process->getErrorOutput();
return $process->getExitCode();
}
2012-01-22 19:08:20 +00:00
public function splitLines($output)
{
return ((string) $output === '') ? array() : preg_split('{\r?\n}', $output);
}
/**
* Get any error output from the last command
*
* @return string
*/
public function getErrorOutput()
{
return $this->errorOutput;
}
static public function getTimeout()
{
return static::$timeout;
}
static public function setTimeout($timeout)
{
static::$timeout = $timeout;
}
}