summaryrefslogtreecommitdiff
path: root/vendor/symfony/console/Helper
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/console/Helper')
-rw-r--r--vendor/symfony/console/Helper/DescriptorHelper.php5
-rw-r--r--vendor/symfony/console/Helper/DialogHelper.php502
-rw-r--r--vendor/symfony/console/Helper/FormatterHelper.php24
-rw-r--r--vendor/symfony/console/Helper/Helper.php33
-rw-r--r--vendor/symfony/console/Helper/HelperInterface.php2
-rw-r--r--vendor/symfony/console/Helper/HelperSet.php23
-rw-r--r--vendor/symfony/console/Helper/ProcessHelper.php24
-rw-r--r--vendor/symfony/console/Helper/ProgressBar.php150
-rw-r--r--vendor/symfony/console/Helper/ProgressHelper.php471
-rw-r--r--vendor/symfony/console/Helper/ProgressIndicator.php61
-rw-r--r--vendor/symfony/console/Helper/QuestionHelper.php84
-rw-r--r--vendor/symfony/console/Helper/SymfonyQuestionHelper.php31
-rw-r--r--vendor/symfony/console/Helper/Table.php146
-rw-r--r--vendor/symfony/console/Helper/TableCell.php11
-rw-r--r--vendor/symfony/console/Helper/TableHelper.php269
-rw-r--r--vendor/symfony/console/Helper/TableSeparator.php4
-rw-r--r--vendor/symfony/console/Helper/TableStyle.php18
17 files changed, 317 insertions, 1541 deletions
diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php
index a53b476b..6f5c8183 100644
--- a/vendor/symfony/console/Helper/DescriptorHelper.php
+++ b/vendor/symfony/console/Helper/DescriptorHelper.php
@@ -31,9 +31,6 @@ class DescriptorHelper extends Helper
*/
private $descriptors = array();
- /**
- * Constructor.
- */
public function __construct()
{
$this
@@ -78,7 +75,7 @@ class DescriptorHelper extends Helper
* @param string $format
* @param DescriptorInterface $descriptor
*
- * @return DescriptorHelper
+ * @return $this
*/
public function register($format, DescriptorInterface $descriptor)
{
diff --git a/vendor/symfony/console/Helper/DialogHelper.php b/vendor/symfony/console/Helper/DialogHelper.php
deleted file mode 100644
index 9ce9f661..00000000
--- a/vendor/symfony/console/Helper/DialogHelper.php
+++ /dev/null
@@ -1,502 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Console\Helper;
-
-use Symfony\Component\Console\Exception\InvalidArgumentException;
-use Symfony\Component\Console\Exception\RuntimeException;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
-
-/**
- * The Dialog class provides helpers to interact with the user.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0.
- * Use {@link \Symfony\Component\Console\Helper\QuestionHelper} instead.
- */
-class DialogHelper extends InputAwareHelper
-{
- private $inputStream;
- private static $shell;
- private static $stty;
-
- public function __construct($triggerDeprecationError = true)
- {
- if ($triggerDeprecationError) {
- @trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED);
- }
- }
-
- /**
- * Asks the user to select a value.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question to ask
- * @param array $choices List of choices to pick from
- * @param bool|string $default The default answer if the user enters nothing
- * @param bool|int $attempts Max number of times to ask before giving up (false by default, which means infinite)
- * @param string $errorMessage Message which will be shown if invalid value from choice list would be picked
- * @param bool $multiselect Select more than one value separated by comma
- *
- * @return int|string|array The selected value or values (the key of the choices array)
- *
- * @throws InvalidArgumentException
- */
- public function select(OutputInterface $output, $question, $choices, $default = null, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false)
- {
- if ($output instanceof ConsoleOutputInterface) {
- $output = $output->getErrorOutput();
- }
-
- $width = max(array_map('strlen', array_keys($choices)));
-
- $messages = (array) $question;
- foreach ($choices as $key => $value) {
- $messages[] = sprintf(" [<info>%-{$width}s</info>] %s", $key, $value);
- }
-
- $output->writeln($messages);
-
- $result = $this->askAndValidate($output, '> ', function ($picked) use ($choices, $errorMessage, $multiselect) {
- // Collapse all spaces.
- $selectedChoices = str_replace(' ', '', $picked);
-
- if ($multiselect) {
- // Check for a separated comma values
- if (!preg_match('/^[a-zA-Z0-9_-]+(?:,[a-zA-Z0-9_-]+)*$/', $selectedChoices, $matches)) {
- throw new InvalidArgumentException(sprintf($errorMessage, $picked));
- }
- $selectedChoices = explode(',', $selectedChoices);
- } else {
- $selectedChoices = array($picked);
- }
-
- $multiselectChoices = array();
-
- foreach ($selectedChoices as $value) {
- if (empty($choices[$value])) {
- throw new InvalidArgumentException(sprintf($errorMessage, $value));
- }
- $multiselectChoices[] = $value;
- }
-
- if ($multiselect) {
- return $multiselectChoices;
- }
-
- return $picked;
- }, $attempts, $default);
-
- return $result;
- }
-
- /**
- * Asks a question to the user.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question to ask
- * @param string $default The default answer if none is given by the user
- * @param array $autocomplete List of values to autocomplete
- *
- * @return string The user answer
- *
- * @throws RuntimeException If there is no data to read in the input stream
- */
- public function ask(OutputInterface $output, $question, $default = null, array $autocomplete = null)
- {
- if ($this->input && !$this->input->isInteractive()) {
- return $default;
- }
-
- if ($output instanceof ConsoleOutputInterface) {
- $output = $output->getErrorOutput();
- }
-
- $output->write($question);
-
- $inputStream = $this->inputStream ?: STDIN;
-
- if (null === $autocomplete || !$this->hasSttyAvailable()) {
- $ret = fgets($inputStream, 4096);
- if (false === $ret) {
- throw new RuntimeException('Aborted');
- }
- $ret = trim($ret);
- } else {
- $ret = '';
-
- $i = 0;
- $ofs = -1;
- $matches = $autocomplete;
- $numMatches = count($matches);
-
- $sttyMode = shell_exec('stty -g');
-
- // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead)
- shell_exec('stty -icanon -echo');
-
- // Add highlighted text style
- $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white'));
-
- // Read a keypress
- while (!feof($inputStream)) {
- $c = fread($inputStream, 1);
-
- // Backspace Character
- if ("\177" === $c) {
- if (0 === $numMatches && 0 !== $i) {
- --$i;
- // Move cursor backwards
- $output->write("\033[1D");
- }
-
- if ($i === 0) {
- $ofs = -1;
- $matches = $autocomplete;
- $numMatches = count($matches);
- } else {
- $numMatches = 0;
- }
-
- // Pop the last character off the end of our string
- $ret = substr($ret, 0, $i);
- } elseif ("\033" === $c) {
- // Did we read an escape sequence?
- $c .= fread($inputStream, 2);
-
- // A = Up Arrow. B = Down Arrow
- if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
- if ('A' === $c[2] && -1 === $ofs) {
- $ofs = 0;
- }
-
- if (0 === $numMatches) {
- continue;
- }
-
- $ofs += ('A' === $c[2]) ? -1 : 1;
- $ofs = ($numMatches + $ofs) % $numMatches;
- }
- } elseif (ord($c) < 32) {
- if ("\t" === $c || "\n" === $c) {
- if ($numMatches > 0 && -1 !== $ofs) {
- $ret = $matches[$ofs];
- // Echo out remaining chars for current match
- $output->write(substr($ret, $i));
- $i = strlen($ret);
- }
-
- if ("\n" === $c) {
- $output->write($c);
- break;
- }
-
- $numMatches = 0;
- }
-
- continue;
- } else {
- $output->write($c);
- $ret .= $c;
- ++$i;
-
- $numMatches = 0;
- $ofs = 0;
-
- foreach ($autocomplete as $value) {
- // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
- if (0 === strpos($value, $ret) && $i !== strlen($value)) {
- $matches[$numMatches++] = $value;
- }
- }
- }
-
- // Erase characters from cursor to end of line
- $output->write("\033[K");
-
- if ($numMatches > 0 && -1 !== $ofs) {
- // Save cursor position
- $output->write("\0337");
- // Write highlighted text
- $output->write('<hl>'.substr($matches[$ofs], $i).'</hl>');
- // Restore cursor position
- $output->write("\0338");
- }
- }
-
- // Reset stty so it behaves normally again
- shell_exec(sprintf('stty %s', $sttyMode));
- }
-
- return strlen($ret) > 0 ? $ret : $default;
- }
-
- /**
- * Asks a confirmation to the user.
- *
- * The question will be asked until the user answers by nothing, yes, or no.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question to ask
- * @param bool $default The default answer if the user enters nothing
- *
- * @return bool true if the user has confirmed, false otherwise
- */
- public function askConfirmation(OutputInterface $output, $question, $default = true)
- {
- $answer = 'z';
- while ($answer && !in_array(strtolower($answer[0]), array('y', 'n'))) {
- $answer = $this->ask($output, $question);
- }
-
- if (false === $default) {
- return $answer && 'y' == strtolower($answer[0]);
- }
-
- return !$answer || 'y' == strtolower($answer[0]);
- }
-
- /**
- * Asks a question to the user, the response is hidden.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question
- * @param bool $fallback In case the response can not be hidden, whether to fallback on non-hidden question or not
- *
- * @return string The answer
- *
- * @throws RuntimeException In case the fallback is deactivated and the response can not be hidden
- */
- public function askHiddenResponse(OutputInterface $output, $question, $fallback = true)
- {
- if ($output instanceof ConsoleOutputInterface) {
- $output = $output->getErrorOutput();
- }
-
- if ('\\' === DIRECTORY_SEPARATOR) {
- $exe = __DIR__.'/../Resources/bin/hiddeninput.exe';
-
- // handle code running from a phar
- if ('phar:' === substr(__FILE__, 0, 5)) {
- $tmpExe = sys_get_temp_dir().'/hiddeninput.exe';
- copy($exe, $tmpExe);
- $exe = $tmpExe;
- }
-
- $output->write($question);
- $value = rtrim(shell_exec($exe));
- $output->writeln('');
-
- if (isset($tmpExe)) {
- unlink($tmpExe);
- }
-
- return $value;
- }
-
- if ($this->hasSttyAvailable()) {
- $output->write($question);
-
- $sttyMode = shell_exec('stty -g');
-
- shell_exec('stty -echo');
- $value = fgets($this->inputStream ?: STDIN, 4096);
- shell_exec(sprintf('stty %s', $sttyMode));
-
- if (false === $value) {
- throw new RuntimeException('Aborted');
- }
-
- $value = trim($value);
- $output->writeln('');
-
- return $value;
- }
-
- if (false !== $shell = $this->getShell()) {
- $output->write($question);
- $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword';
- $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
- $value = rtrim(shell_exec($command));
- $output->writeln('');
-
- return $value;
- }
-
- if ($fallback) {
- return $this->ask($output, $question);
- }
-
- throw new RuntimeException('Unable to hide the response');
- }
-
- /**
- * Asks for a value and validates the response.
- *
- * The validator receives the data to validate. It must return the
- * validated data when the data is valid and throw an exception
- * otherwise.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question to ask
- * @param callable $validator A PHP callback
- * @param int|false $attempts Max number of times to ask before giving up (false by default, which means infinite)
- * @param string $default The default answer if none is given by the user
- * @param array $autocomplete List of values to autocomplete
- *
- * @return mixed
- *
- * @throws \Exception When any of the validators return an error
- */
- public function askAndValidate(OutputInterface $output, $question, $validator, $attempts = false, $default = null, array $autocomplete = null)
- {
- $that = $this;
-
- $interviewer = function () use ($output, $question, $default, $autocomplete, $that) {
- return $that->ask($output, $question, $default, $autocomplete);
- };
-
- return $this->validateAttempts($interviewer, $output, $validator, $attempts);
- }
-
- /**
- * Asks for a value, hide and validates the response.
- *
- * The validator receives the data to validate. It must return the
- * validated data when the data is valid and throw an exception
- * otherwise.
- *
- * @param OutputInterface $output An Output instance
- * @param string|array $question The question to ask
- * @param callable $validator A PHP callback
- * @param int|false $attempts Max number of times to ask before giving up (false by default, which means infinite)
- * @param bool $fallback In case the response can not be hidden, whether to fallback on non-hidden question or not
- *
- * @return string The response
- *
- * @throws \Exception When any of the validators return an error
- * @throws RuntimeException In case the fallback is deactivated and the response can not be hidden
- */
- public function askHiddenResponseAndValidate(OutputInterface $output, $question, $validator, $attempts = false, $fallback = true)
- {
- $that = $this;
-
- $interviewer = function () use ($output, $question, $fallback, $that) {
- return $that->askHiddenResponse($output, $question, $fallback);
- };
-
- return $this->validateAttempts($interviewer, $output, $validator, $attempts);
- }
-
- /**
- * Sets the input stream to read from when interacting with the user.
- *
- * This is mainly useful for testing purpose.
- *
- * @param resource $stream The input stream
- */
- public function setInputStream($stream)
- {
- $this->inputStream = $stream;
- }
-
- /**
- * Returns the helper's input stream.
- *
- * @return resource|null The input stream or null if the default STDIN is used
- */
- public function getInputStream()
- {
- return $this->inputStream;
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'dialog';
- }
-
- /**
- * Return a valid Unix shell.
- *
- * @return string|bool The valid shell name, false in case no valid shell is found
- */
- private function getShell()
- {
- if (null !== self::$shell) {
- return self::$shell;
- }
-
- self::$shell = false;
-
- if (file_exists('/usr/bin/env')) {
- // handle other OSs with bash/zsh/ksh/csh if available to hide the answer
- $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null";
- foreach (array('bash', 'zsh', 'ksh', 'csh') as $sh) {
- if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) {
- self::$shell = $sh;
- break;
- }
- }
- }
-
- return self::$shell;
- }
-
- private function hasSttyAvailable()
- {
- if (null !== self::$stty) {
- return self::$stty;
- }
-
- exec('stty 2>&1', $output, $exitcode);
-
- return self::$stty = $exitcode === 0;
- }
-
- /**
- * Validate an attempt.
- *
- * @param callable $interviewer A callable that will ask for a question and return the result
- * @param OutputInterface $output An Output instance
- * @param callable $validator A PHP callback
- * @param int|false $attempts Max number of times to ask before giving up; false will ask infinitely
- *
- * @return string The validated response
- *
- * @throws \Exception In case the max number of attempts has been reached and no valid response has been given
- */
- private function validateAttempts($interviewer, OutputInterface $output, $validator, $attempts)
- {
- if ($output instanceof ConsoleOutputInterface) {
- $output = $output->getErrorOutput();
- }
-
- $e = null;
- while (false === $attempts || $attempts--) {
- if (null !== $e) {
- $output->writeln($this->getHelperSet()->get('formatter')->formatBlock($e->getMessage(), 'error'));
- }
-
- try {
- return call_user_func($validator, $interviewer());
- } catch (\Exception $e) {
- }
- }
-
- throw $e;
- }
-}
diff --git a/vendor/symfony/console/Helper/FormatterHelper.php b/vendor/symfony/console/Helper/FormatterHelper.php
index ac736f98..6a48a77f 100644
--- a/vendor/symfony/console/Helper/FormatterHelper.php
+++ b/vendor/symfony/console/Helper/FormatterHelper.php
@@ -73,6 +73,30 @@ class FormatterHelper extends Helper
}
/**
+ * Truncates a message to the given length.
+ *
+ * @param string $message
+ * @param int $length
+ * @param string $suffix
+ *
+ * @return string
+ */
+ public function truncate($message, $length, $suffix = '...')
+ {
+ $computedLength = $length - $this->strlen($suffix);
+
+ if ($computedLength > $this->strlen($message)) {
+ return $message;
+ }
+
+ if (false === $encoding = mb_detect_encoding($message, null, true)) {
+ return substr($message, 0, $length).$suffix;
+ }
+
+ return mb_substr($message, 0, $length, $encoding).$suffix;
+ }
+
+ /**
* {@inheritdoc}
*/
public function getName()
diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php
index 43f9a169..0954bad6 100644
--- a/vendor/symfony/console/Helper/Helper.php
+++ b/vendor/symfony/console/Helper/Helper.php
@@ -23,9 +23,7 @@ abstract class Helper implements HelperInterface
protected $helperSet = null;
/**
- * Sets the helper set associated with this helper.
- *
- * @param HelperSet $helperSet A HelperSet instance
+ * {@inheritdoc}
*/
public function setHelperSet(HelperSet $helperSet = null)
{
@@ -33,9 +31,7 @@ abstract class Helper implements HelperInterface
}
/**
- * Gets the helper set associated with this helper.
- *
- * @return HelperSet A HelperSet instance
+ * {@inheritdoc}
*/
public function getHelperSet()
{
@@ -58,6 +54,24 @@ abstract class Helper implements HelperInterface
return mb_strwidth($string, $encoding);
}
+ /**
+ * Returns the subset of a string, using mb_substr if it is available.
+ *
+ * @param string $string String to subset
+ * @param int $from Start offset
+ * @param int|null $length Length to read
+ *
+ * @return string The string subset
+ */
+ public static function substr($string, $from, $length = null)
+ {
+ if (false === $encoding = mb_detect_encoding($string, null, true)) {
+ return substr($string, $from, $length);
+ }
+
+ return mb_substr($string, $from, $length, $encoding);
+ }
+
public static function formatTime($secs)
{
static $timeFormats = array(
@@ -106,6 +120,11 @@ abstract class Helper implements HelperInterface
public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, $string)
{
+ return self::strlen(self::removeDecoration($formatter, $string));
+ }
+
+ public static function removeDecoration(OutputFormatterInterface $formatter, $string)
+ {
$isDecorated = $formatter->isDecorated();
$formatter->setDecorated(false);
// remove <...> formatting
@@ -114,6 +133,6 @@ abstract class Helper implements HelperInterface
$string = preg_replace("/\033\[[^m]*m/", '', $string);
$formatter->setDecorated($isDecorated);
- return self::strlen($string);
+ return $string;
}
}
diff --git a/vendor/symfony/console/Helper/HelperInterface.php b/vendor/symfony/console/Helper/HelperInterface.php
index 5a923e0a..1ce82358 100644
--- a/vendor/symfony/console/Helper/HelperInterface.php
+++ b/vendor/symfony/console/Helper/HelperInterface.php
@@ -20,8 +20,6 @@ interface HelperInterface
{
/**
* Sets the helper set associated with this helper.
- *
- * @param HelperSet $helperSet A HelperSet instance
*/
public function setHelperSet(HelperSet $helperSet = null);
diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php
index 27fedcf7..24ce18fb 100644
--- a/vendor/symfony/console/Helper/HelperSet.php
+++ b/vendor/symfony/console/Helper/HelperSet.php
@@ -21,13 +21,14 @@ use Symfony\Component\Console\Exception\InvalidArgumentException;
*/
class HelperSet implements \IteratorAggregate
{
+ /**
+ * @var Helper[]
+ */
private $helpers = array();
private $command;
/**
- * Constructor.
- *
- * @param Helper[] $helpers An array of helper.
+ * @param Helper[] $helpers An array of helper
*/
public function __construct(array $helpers = array())
{
@@ -79,22 +80,9 @@ class HelperSet implements \IteratorAggregate
throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name));
}
- if ('dialog' === $name && $this->helpers[$name] instanceof DialogHelper) {
- @trigger_error('"Symfony\Component\Console\Helper\DialogHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\QuestionHelper" instead.', E_USER_DEPRECATED);
- } elseif ('progress' === $name && $this->helpers[$name] instanceof ProgressHelper) {
- @trigger_error('"Symfony\Component\Console\Helper\ProgressHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\ProgressBar" instead.', E_USER_DEPRECATED);
- } elseif ('table' === $name && $this->helpers[$name] instanceof TableHelper) {
- @trigger_error('"Symfony\Component\Console\Helper\TableHelper" is deprecated since version 2.5 and will be removed in 3.0. Use "Symfony\Component\Console\Helper\Table" instead.', E_USER_DEPRECATED);
- }
-
return $this->helpers[$name];
}
- /**
- * Sets the command associated with this helper set.
- *
- * @param Command $command A Command instance
- */
public function setCommand(Command $command = null)
{
$this->command = $command;
@@ -110,6 +98,9 @@ class HelperSet implements \IteratorAggregate
return $this->command;
}
+ /**
+ * @return Helper[]
+ */
public function getIterator()
{
return new \ArrayIterator($this->helpers);
diff --git a/vendor/symfony/console/Helper/ProcessHelper.php b/vendor/symfony/console/Helper/ProcessHelper.php
index a811eb48..82935bae 100644
--- a/vendor/symfony/console/Helper/ProcessHelper.php
+++ b/vendor/symfony/console/Helper/ProcessHelper.php
@@ -15,7 +15,6 @@ use Symfony\Component\Console\Output\ConsoleOutputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
-use Symfony\Component\Process\ProcessBuilder;
/**
* The ProcessHelper class provides helpers to run external processes.
@@ -36,7 +35,7 @@ class ProcessHelper extends Helper
*
* @return Process The process that ran
*/
- public function run(OutputInterface $output, $cmd, $error = null, $callback = null, $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE)
+ public function run(OutputInterface $output, $cmd, $error = null, callable $callback = null, $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE)
{
if ($output instanceof ConsoleOutputInterface) {
$output = $output->getErrorOutput();
@@ -44,9 +43,7 @@ class ProcessHelper extends Helper
$formatter = $this->getHelperSet()->get('debug_formatter');
- if (is_array($cmd)) {
- $process = ProcessBuilder::create($cmd)->getProcess();
- } elseif ($cmd instanceof Process) {
+ if ($cmd instanceof Process) {
$process = $cmd;
} else {
$process = new Process($cmd);
@@ -92,7 +89,7 @@ class ProcessHelper extends Helper
*
* @see run()
*/
- public function mustRun(OutputInterface $output, $cmd, $error = null, $callback = null)
+ public function mustRun(OutputInterface $output, $cmd, $error = null, callable $callback = null)
{
$process = $this->run($output, $cmd, $error, $callback);
@@ -112,7 +109,7 @@ class ProcessHelper extends Helper
*
* @return callable
*/
- public function wrapCallback(OutputInterface $output, Process $process, $callback = null)
+ public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null)
{
if ($output instanceof ConsoleOutputInterface) {
$output = $output->getErrorOutput();
@@ -120,10 +117,8 @@ class ProcessHelper extends Helper
$formatter = $this->getHelperSet()->get('debug_formatter');
- $that = $this;
-
- return function ($type, $buffer) use ($output, $process, $callback, $formatter, $that) {
- $output->write($formatter->progress(spl_object_hash($process), $that->escapeString($buffer), Process::ERR === $type));
+ return function ($type, $buffer) use ($output, $process, $callback, $formatter) {
+ $output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type));
if (null !== $callback) {
call_user_func($callback, $type, $buffer);
@@ -131,12 +126,7 @@ class ProcessHelper extends Helper
};
}
- /**
- * This method is public for PHP 5.3 compatibility, it should be private.
- *
- * @internal
- */
- public function escapeString($str)
+ private function escapeString($str)
{
return str_replace('<', '\\<', $str);
}
diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php
index e7717a52..247b5913 100644
--- a/vendor/symfony/console/Helper/ProgressBar.php
+++ b/vendor/symfony/console/Helper/ProgressBar.php
@@ -14,6 +14,7 @@ namespace Symfony\Component\Console\Helper;
use Symfony\Component\Console\Output\ConsoleOutputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Exception\LogicException;
+use Symfony\Component\Console\Terminal;
/**
* The ProgressBar provides helpers to display progress output.
@@ -21,9 +22,8 @@ use Symfony\Component\Console\Exception\LogicException;
* @author Fabien Potencier <fabien@symfony.com>
* @author Chris Jones <leeked@gmail.com>
*/
-class ProgressBar
+final class ProgressBar
{
- // options
private $barWidth = 28;
private $barChar;
private $emptyBarChar = '-';
@@ -31,10 +31,6 @@ class ProgressBar
private $format;
private $internalFormat;
private $redrawFreq = 1;
-
- /**
- * @var OutputInterface
- */
private $output;
private $step = 0;
private $max;
@@ -42,15 +38,15 @@ class ProgressBar
private $stepWidth;
private $percent = 0.0;
private $formatLineCount;
- private $messages;
+ private $messages = array();
private $overwrite = true;
+ private $terminal;
+ private $firstRun = true;
private static $formatters;
private static $formats;
/**
- * Constructor.
- *
* @param OutputInterface $output An OutputInterface instance
* @param int $max Maximum steps (0 if unknown)
*/
@@ -62,6 +58,7 @@ class ProgressBar
$this->output = $output;
$this->setMaxSteps($max);
+ $this->terminal = new Terminal();
if (!$this->output->isDecorated()) {
// disable overwrite when output does not support ANSI codes.
@@ -82,7 +79,7 @@ class ProgressBar
* @param string $name The placeholder name (including the delimiter char like %)
* @param callable $callable A PHP callable
*/
- public static function setPlaceholderFormatterDefinition($name, $callable)
+ public static function setPlaceholderFormatterDefinition($name, callable $callable)
{
if (!self::$formatters) {
self::$formatters = self::initPlaceholderFormatters();
@@ -140,6 +137,16 @@ class ProgressBar
return isset(self::$formats[$name]) ? self::$formats[$name] : null;
}
+ /**
+ * Associates a text with a named placeholder.
+ *
+ * The text is displayed when the progress bar is rendered but only
+ * when the corresponding placeholder is part of the custom format line
+ * (by wrapping the name with %).
+ *
+ * @param string $message The text to associate with the placeholder
+ * @param string $name The name of the placeholder
+ */
public function setMessage($message, $name = 'message')
{
$this->messages[$name] = $message;
@@ -171,20 +178,6 @@ class ProgressBar
}
/**
- * Gets the progress bar step.
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use {@link getProgress()} instead.
- *
- * @return int The progress bar step
- */
- public function getStep()
- {
- @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the getProgress() method instead.', E_USER_DEPRECATED);
-
- return $this->getProgress();
- }
-
- /**
* Gets the current step position.
*
* @return int The progress bar step
@@ -197,11 +190,9 @@ class ProgressBar
/**
* Gets the progress bar step width.
*
- * @internal This method is public for PHP 5.3 compatibility, it should not be used.
- *
* @return int The progress bar step width
*/
- public function getStepWidth()
+ private function getStepWidth()
{
return $this->stepWidth;
}
@@ -223,7 +214,7 @@ class ProgressBar
*/
public function setBarWidth($size)
{
- $this->barWidth = (int) $size;
+ $this->barWidth = max(1, (int) $size);
}
/**
@@ -343,8 +334,6 @@ class ProgressBar
* Advances the progress output X steps.
*
* @param int $step Number of steps to advance
- *
- * @throws LogicException
*/
public function advance($step = 1)
{
@@ -352,22 +341,6 @@ class ProgressBar
}
/**
- * Sets the current progress.
- *
- * @deprecated since version 2.6, to be removed in 3.0. Use {@link setProgress()} instead.
- *
- * @param int $step The current progress
- *
- * @throws LogicException
- */
- public function setCurrent($step)
- {
- @trigger_error('The '.__METHOD__.' method is deprecated since version 2.6 and will be removed in 3.0. Use the setProgress() method instead.', E_USER_DEPRECATED);
-
- $this->setProgress($step);
- }
-
- /**
* Sets whether to overwrite the progressbar, false for new line.
*
* @param bool $overwrite
@@ -381,18 +354,15 @@ class ProgressBar
* Sets the current progress.
*
* @param int $step The current progress
- *
- * @throws LogicException
*/
public function setProgress($step)
{
$step = (int) $step;
- if ($step < $this->step) {
- throw new LogicException('You can\'t regress the progress bar.');
- }
if ($this->max && $step > $this->max) {
$this->max = $step;
+ } elseif ($step < 0) {
+ $step = 0;
}
$prevPeriod = (int) ($this->step / $this->redrawFreq);
@@ -434,25 +404,7 @@ class ProgressBar
$this->setRealFormat($this->internalFormat ?: $this->determineBestFormat());
}
- // these 3 variables can be removed in favor of using $this in the closure when support for PHP 5.3 will be dropped.
- $self = $this;
- $output = $this->output;
- $messages = $this->messages;
- $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self, $output, $messages) {
- if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) {
- $text = call_user_func($formatter, $self, $output);
- } elseif (isset($messages[$matches[1]])) {
- $text = $messages[$matches[1]];
- } else {
- return $matches[0];
- }
-
- if (isset($matches[2])) {
- $text = sprintf('%'.$matches[2], $text);
- }
-
- return $text;
- }, $this->format));
+ $this->overwrite($this->buildLine());
}
/**
@@ -513,20 +465,24 @@ class ProgressBar
private function overwrite($message)
{
if ($this->overwrite) {
- // Move the cursor to the beginning of the line
- $this->output->write("\x0D");
+ if (!$this->firstRun) {
+ // Move the cursor to the beginning of the line
+ $this->output->write("\x0D");
- // Erase the line
- $this->output->write("\x1B[2K");
+ // Erase the line
+ $this->output->write("\x1B[2K");
- // Erase previous lines
- if ($this->formatLineCount > 0) {
- $this->output->write(str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount));
+ // Erase previous lines
+ if ($this->formatLineCount > 0) {
+ $this->output->write(str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount));
+ }
}
} elseif ($this->step > 0) {
$this->output->writeln('');
}
+ $this->firstRun = false;
+
$this->output->write($message);
}
@@ -618,4 +574,44 @@ class ProgressBar
'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%',
);
}
+
+ /**
+ * @return string
+ */
+ private function buildLine()
+ {
+ $regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i";
+ $callback = function ($matches) {
+ if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) {
+ $text = call_user_func($formatter, $this, $this->output);
+ } elseif (isset($this->messages[$matches[1]])) {
+ $text = $this->messages[$matches[1]];
+ } else {
+ return $matches[0];
+ }
+
+ if (isset($matches[2])) {
+ $text = sprintf('%'.$matches[2], $text);
+ }
+
+ return $text;
+ };
+ $line = preg_replace_callback($regex, $callback, $this->format);
+
+ // gets string length for each sub line with multiline format
+ $linesLength = array_map(function ($subLine) {
+ return Helper::strlenWithoutDecoration($this->output->getFormatter(), rtrim($subLine, "\r"));
+ }, explode("\n", $line));
+
+ $linesWidth = max($linesLength);
+
+ $terminalWidth = $this->terminal->getWidth();
+ if ($linesWidth <= $terminalWidth) {
+ return $line;
+ }
+
+ $this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth);
+
+ return preg_replace_callback($regex, $callback, $this->format);
+ }
}
diff --git a/vendor/symfony/console/Helper/ProgressHelper.php b/vendor/symfony/console/Helper/ProgressHelper.php
deleted file mode 100644
index 96b6202c..00000000
--- a/vendor/symfony/console/Helper/ProgressHelper.php
+++ /dev/null
@@ -1,471 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Console\Helper;
-
-use Symfony\Component\Console\Output\NullOutput;
-use Symfony\Component\Console\Output\ConsoleOutputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Exception\LogicException;
-
-/**
- * The Progress class provides helpers to display progress output.
- *
- * @author Chris Jones <leeked@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0
- * Use {@link ProgressBar} instead.
- */
-class ProgressHelper extends Helper
-{
- const FORMAT_QUIET = ' %percent%%';
- const FORMAT_NORMAL = ' %current%/%max% [%bar%] %percent%%';
- const FORMAT_VERBOSE = ' %current%/%max% [%bar%] %percent%% Elapsed: %elapsed%';
- const FORMAT_QUIET_NOMAX = ' %current%';
- const FORMAT_NORMAL_NOMAX = ' %current% [%bar%]';
- const FORMAT_VERBOSE_NOMAX = ' %current% [%bar%] Elapsed: %elapsed%';
-
- // options
- private $barWidth = 28;
- private $barChar = '=';
- private $emptyBarChar = '-';
- private $progressChar = '>';
- private $format = null;
- private $redrawFreq = 1;
-
- private $lastMessagesLength;
- private $barCharOriginal;
-
- /**
- * @var OutputInterface
- */
- private $output;
-
- /**
- * Current step.
- *
- * @var int
- */
- private $current;
-
- /**
- * Maximum number of steps.
- *
- * @var int
- */
- private $max;
-
- /**
- * Start time of the progress bar.
- *
- * @var int
- */
- private $startTime;
-
- /**
- * List of formatting variables.
- *
- * @var array
- */
- private $defaultFormatVars = array(
- 'current',
- 'max',
- 'bar',
- 'percent',
- 'elapsed',
- );
-
- /**
- * Available formatting variables.
- *
- * @var array
- */
- private $formatVars;
-
- /**
- * Stored format part widths (used for padding).
- *
- * @var array
- */
- private $widths = array(
- 'current' => 4,
- 'max' => 4,
- 'percent' => 3,
- 'elapsed' => 6,
- );
-
- /**
- * Various time formats.
- *
- * @var array
- */
- private $timeFormats = array(
- array(0, '???'),
- array(2, '1 sec'),
- array(59, 'secs', 1),
- array(60, '1 min'),
- array(3600, 'mins', 60),
- array(5400, '1 hr'),
- array(86400, 'hrs', 3600),
- array(129600, '1 day'),
- array(604800, 'days', 86400),
- );
-
- public function __construct($triggerDeprecationError = true)
- {
- if ($triggerDeprecationError) {
- @trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Console\Helper\ProgressBar class instead.', E_USER_DEPRECATED);
- }
- }
-
- /**
- * Sets the progress bar width.
- *
- * @param int $size The progress bar size
- */
- public function setBarWidth($size)
- {
- $this->barWidth = (int) $size;
- }
-
- /**
- * Sets the bar character.
- *
- * @param string $char A character
- */
- public function setBarCharacter($char)
- {
- $this->barChar = $char;
- }
-
- /**
- * Sets the empty bar character.
- *
- * @param string $char A character
- */
- public function setEmptyBarCharacter($char)
- {
- $this->emptyBarChar = $char;
- }
-
- /**
- * Sets the progress bar character.
- *
- * @param string $char A character
- */
- public function setProgressCharacter($char)
- {
- $this->progressChar = $char;
- }
-
- /**
- * Sets the progress bar format.
- *
- * @param string $format The format
- */
- public function setFormat($format)
- {
- $this->format = $format;
- }
-
- /**
- * Sets the redraw frequency.
- *
- * @param int $freq The frequency in steps
- */
- public function setRedrawFrequency($freq)
- {
- $this->redrawFreq = (int) $freq;
- }
-
- /**
- * Starts the progress output.
- *
- * @param OutputInterface $output An Output instance
- * @param int|null $max Maximum steps
- */
- public function start(OutputInterface $output, $max = null)
- {
- if ($output instanceof ConsoleOutputInterface) {
- $output = $output->getErrorOutput();
- }
-
- $this->startTime = time();
- $this->current = 0;
- $this->max = (int) $max;
-
- // Disabling output when it does not support ANSI codes as it would result in a broken display anyway.
- $this->output = $output->isDecorated() ? $output : new NullOutput();
- $this->lastMessagesLength = 0;
- $this->barCharOriginal = '';
-
- if (null === $this->format) {
- switch ($output->getVerbosity()) {
- case OutputInterface::VERBOSITY_QUIET:
- $this->format = self::FORMAT_QUIET_NOMAX;
- if ($this->max > 0) {
- $this->format = self::FORMAT_QUIET;
- }
- break;
- case OutputInterface::VERBOSITY_VERBOSE:
- case OutputInterface::VERBOSITY_VERY_VERBOSE:
- case OutputInterface::VERBOSITY_DEBUG:
- $this->format = self::FORMAT_VERBOSE_NOMAX;
- if ($this->max > 0) {
- $this->format = self::FORMAT_VERBOSE;
- }
- break;
- default:
- $this->format = self::FORMAT_NORMAL_NOMAX;
- if ($this->max > 0) {
- $this->format = self::FORMAT_NORMAL;
- }
- break;
- }
- }
-
- $this->initialize();
- }
-
- /**
- * Advances the progress output X steps.
- *
- * @param int $step Number of steps to advance
- * @param bool $redraw Whether to redraw or not
- *
- * @throws LogicException
- */
- public function advance($step = 1, $redraw = false)
- {
- $this->setCurrent($this->current + $step, $redraw);
- }
-
- /**
- * Sets the current progress.
- *
- * @param int $current The current progress
- * @param bool $redraw Whether to redraw or not
- *
- * @throws LogicException
- */
- public function setCurrent($current, $redraw = false)
- {
- if (null === $this->startTime) {
- throw new LogicException('You must start the progress bar before calling setCurrent().');
- }
-
- $current = (int) $current;
-
- if ($current < $this->current) {
- throw new LogicException('You can\'t regress the progress bar');
- }
-
- if (0 === $this->current) {
- $redraw = true;
- }
-
- $prevPeriod = (int) ($this->current / $this->redrawFreq);
-
- $this->current = $current;
-
- $currPeriod = (int) ($this->current / $this->redrawFreq);
- if ($redraw || $prevPeriod !== $currPeriod || $this->max === $this->current) {
- $this->display();
- }
- }
-
- /**
- * Outputs the current progress string.
- *
- * @param bool $finish Forces the end result
- *
- * @throws LogicException
- */
- public function display($finish = false)
- {
- if (null === $this->startTime) {
- throw new LogicException('You must start the progress bar before calling display().');
- }
-
- $message = $this->format;
- foreach ($this->generate($finish) as $name => $value) {
- $message = str_replace("%{$name}%", $value, $message);
- }
- $this->overwrite($this->output, $message);
- }
-
- /**
- * Removes the progress bar from the current line.
- *
- * This is useful if you wish to write some output
- * while a progress bar is running.
- * Call display() to show the progress bar again.
- */
- public function clear()
- {
- $this->overwrite($this->output, '');
- }
-
- /**
- * Finishes the progress output.
- */
- public function finish()
- {
- if (null === $this->startTime) {
- throw new LogicException('You must start the progress bar before calling finish().');
- }
-
- if (null !== $this->startTime) {
- if (!$this->max) {
- $this->barChar = $this->barCharOriginal;
- $this->display(true);
- }
- $this->startTime = null;
- $this->output->writeln('');
- $this->output = null;
- }
- }
-
- /**
- * Initializes the progress helper.
- */
- private function initialize()
- {
- $this->formatVars = array();
- foreach ($this->defaultFormatVars as $var) {
- if (false !== strpos($this->format, "%{$var}%")) {
- $this->formatVars[$var] = true;
- }
- }
-
- if ($this->max > 0) {
- $this->widths['max'] = $this->strlen($this->max);
- $this->widths['current'] = $this->widths['max'];
- } else {
- $this->barCharOriginal = $this->barChar;
- $this->barChar = $this->emptyBarChar;
- }
- }
-
- /**
- * Generates the array map of format variables to values.
- *
- * @param bool $finish Forces the end result
- *
- * @return array Array of format vars and values
- */
- private function generate($finish = false)
- {
- $vars = array();
- $percent = 0;
- if ($this->max > 0) {
- $percent = (float) $this->current / $this->max;
- }
-
- if (isset($this->formatVars['bar'])) {
- $completeBars = 0;
-
- if ($this->max > 0) {
- $completeBars = floor($percent * $this->barWidth);
- } else {
- if (!$finish) {
- $completeBars = floor($this->current % $this->barWidth);
- } else {
- $completeBars = $this->barWidth;
- }
- }
-
- $emptyBars = $this->barWidth - $completeBars - $this->strlen($this->progressChar);
- $bar = str_repeat($this->barChar, $completeBars);
- if ($completeBars < $this->barWidth) {
- $bar .= $this->progressChar;
- $bar .= str_repeat($this->emptyBarChar, $emptyBars);
- }
-
- $vars['bar'] = $bar;
- }
-
- if (isset($this->formatVars['elapsed'])) {
- $elapsed = time() - $this->startTime;
- $vars['elapsed'] = str_pad($this->humaneTime($elapsed), $this->widths['elapsed'], ' ', STR_PAD_LEFT);
- }
-
- if (isset($this->formatVars['current'])) {
- $vars['current'] = str_pad($this->current, $this->widths['current'], ' ', STR_PAD_LEFT);
- }
-
- if (isset($this->formatVars['max'])) {
- $vars['max'] = $this->max;
- }
-
- if (isset($this->formatVars['percent'])) {
- $vars['percent'] = str_pad(floor($percent * 100), $this->widths['percent'], ' ', STR_PAD_LEFT);
- }
-
- return $vars;
- }
-
- /**
- * Converts seconds into human-readable format.
- *
- * @param int $secs Number of seconds
- *
- * @return string Time in readable format
- */
- private function humaneTime($secs)
- {
- $text = '';
- foreach ($this->timeFormats as $format) {
- if ($secs < $format[0]) {
- if (count($format) == 2) {
- $text = $format[1];
- break;
- } else {
- $text = ceil($secs / $format[2]).' '.$format[1];
- break;
- }
- }
- }
-
- return $text;
- }
-
- /**
- * Overwrites a previous message to the output.
- *
- * @param OutputInterface $output An Output instance
- * @param string $message The message
- */
- private function overwrite(OutputInterface $output, $message)
- {
- $length = $this->strlen($message);
-
- // append whitespace to match the last line's length
- if (null !== $this->lastMessagesLength && $this->lastMessagesLength > $length) {
- $message = str_pad($message, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT);
- }
-
- // carriage return
- $output->write("\x0D");
- $output->write($message);
-
- $this->lastMessagesLength = $this->strlen($message);
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'progress';
- }
-}
diff --git a/vendor/symfony/console/Helper/ProgressIndicator.php b/vendor/symfony/console/Helper/ProgressIndicator.php
index ccf9771b..d441accd 100644
--- a/vendor/symfony/console/Helper/ProgressIndicator.php
+++ b/vendor/symfony/console/Helper/ProgressIndicator.php
@@ -28,7 +28,6 @@ class ProgressIndicator
private $indicatorCurrent;
private $indicatorChangeInterval;
private $indicatorUpdateTime;
- private $lastMessagesLength;
private $started = false;
private static $formatters;
@@ -77,42 +76,6 @@ class ProgressIndicator
}
/**
- * Gets the current indicator message.
- *
- * @return string|null
- *
- * @internal for PHP 5.3 compatibility
- */
- public function getMessage()
- {
- return $this->message;
- }
-
- /**
- * Gets the progress bar start time.
- *
- * @return int The progress bar start time
- *
- * @internal for PHP 5.3 compatibility
- */
- public function getStartTime()
- {
- return $this->startTime;
- }
-
- /**
- * Gets the current animated indicator character.
- *
- * @return string
- *
- * @internal for PHP 5.3 compatibility
- */
- public function getCurrentValue()
- {
- return $this->indicatorValues[$this->indicatorCurrent % count($this->indicatorValues)];
- }
-
- /**
* Starts the indicator output.
*
* @param $message
@@ -125,7 +88,6 @@ class ProgressIndicator
$this->message = $message;
$this->started = true;
- $this->lastMessagesLength = 0;
$this->startTime = time();
$this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval;
$this->indicatorCurrent = 0;
@@ -262,27 +224,12 @@ class ProgressIndicator
*/
private function overwrite($message)
{
- // append whitespace to match the line's length
- if (null !== $this->lastMessagesLength) {
- if ($this->lastMessagesLength > Helper::strlenWithoutDecoration($this->output->getFormatter(), $message)) {
- $message = str_pad($message, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT);
- }
- }
-
if ($this->output->isDecorated()) {
- $this->output->write("\x0D");
+ $this->output->write("\x0D\x1B[2K");
$this->output->write($message);
} else {
$this->output->writeln($message);
}
-
- $this->lastMessagesLength = 0;
-
- $len = Helper::strlenWithoutDecoration($this->output->getFormatter(), $message);
-
- if ($len > $this->lastMessagesLength) {
- $this->lastMessagesLength = $len;
- }
}
private function getCurrentTimeInMilliseconds()
@@ -294,13 +241,13 @@ class ProgressIndicator
{
return array(
'indicator' => function (ProgressIndicator $indicator) {
- return $indicator->getCurrentValue();
+ return $indicator->indicatorValues[$indicator->indicatorCurrent % count($indicator->indicatorValues)];
},
'message' => function (ProgressIndicator $indicator) {
- return $indicator->getMessage();
+ return $indicator->message;
},
'elapsed' => function (ProgressIndicator $indicator) {
- return Helper::formatTime(time() - $indicator->getStartTime());
+ return Helper::formatTime(time() - $indicator->startTime);
},
'memory' => function () {
return Helper::formatMemory(memory_get_usage(true));
diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php
index 5bb30df8..f0f37a09 100644
--- a/vendor/symfony/console/Helper/QuestionHelper.php
+++ b/vendor/symfony/console/Helper/QuestionHelper.php
@@ -13,10 +13,12 @@ namespace Symfony\Component\Console\Helper;
use Symfony\Component\Console\Exception\InvalidArgumentException;
use Symfony\Component\Console\Exception\RuntimeException;
+use Symfony\Component\Console\Formatter\OutputFormatter;
+use Symfony\Component\Console\Formatter\OutputFormatterStyle;
use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\StreamableInputInterface;
use Symfony\Component\Console\Output\ConsoleOutputInterface;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Formatter\OutputFormatterStyle;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Question\ChoiceQuestion;
@@ -34,11 +36,7 @@ class QuestionHelper extends Helper
/**
* Asks a question to the user.
*
- * @param InputInterface $input An InputInterface instance
- * @param OutputInterface $output An OutputInterface instance
- * @param Question $question The question to ask
- *
- * @return string The user answer
+ * @return mixed The user answer
*
* @throws RuntimeException If there is no data to read in the input stream
*/
@@ -52,14 +50,16 @@ class QuestionHelper extends Helper
return $question->getDefault();
}
+ if ($input instanceof StreamableInputInterface && $stream = $input->getStream()) {
+ $this->inputStream = $stream;
+ }
+
if (!$question->getValidator()) {
return $this->doAsk($output, $question);
}
- $that = $this;
-
- $interviewer = function () use ($output, $question, $that) {
- return $that->doAsk($output, $question);
+ $interviewer = function () use ($output, $question) {
+ return $this->doAsk($output, $question);
};
return $this->validateAttempts($interviewer, $output, $question);
@@ -70,12 +70,17 @@ class QuestionHelper extends Helper
*
* This is mainly useful for testing purpose.
*
+ * @deprecated since version 3.2, to be removed in 4.0. Use
+ * StreamableInputInterface::setStream() instead.
+ *
* @param resource $stream The input stream
*
* @throws InvalidArgumentException In case the stream is not a resource
*/
public function setInputStream($stream)
{
+ @trigger_error(sprintf('The %s() method is deprecated since version 3.2 and will be removed in 4.0. Use %s::setStream() instead.', __METHOD__, StreamableInputInterface::class), E_USER_DEPRECATED);
+
if (!is_resource($stream)) {
throw new InvalidArgumentException('Input stream must be a valid resource.');
}
@@ -86,10 +91,17 @@ class QuestionHelper extends Helper
/**
* Returns the helper's input stream.
*
+ * @deprecated since version 3.2, to be removed in 4.0. Use
+ * StreamableInputInterface::getStream() instead.
+ *
* @return resource
*/
public function getInputStream()
{
+ if (0 === func_num_args() || func_get_arg(0)) {
+ @trigger_error(sprintf('The %s() method is deprecated since version 3.2 and will be removed in 4.0. Use %s::getStream() instead.', __METHOD__, StreamableInputInterface::class), E_USER_DEPRECATED);
+ }
+
return $this->inputStream;
}
@@ -102,19 +114,21 @@ class QuestionHelper extends Helper
}
/**
+ * Prevents usage of stty.
+ */
+ public static function disableStty()
+ {
+ self::$stty = false;
+ }
+
+ /**
* Asks the question to the user.
*
- * This method is public for PHP 5.3 compatibility, it should be private.
- *
- * @param OutputInterface $output
- * @param Question $question
- *
* @return bool|mixed|null|string
*
- * @throws \Exception
- * @throws \RuntimeException
+ * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden
*/
- public function doAsk(OutputInterface $output, Question $question)
+ private function doAsk(OutputInterface $output, Question $question)
{
$this->writePrompt($output, $question);
@@ -126,7 +140,7 @@ class QuestionHelper extends Helper
if ($question->isHidden()) {
try {
$ret = trim($this->getHiddenResponse($output, $inputStream));
- } catch (\RuntimeException $e) {
+ } catch (RuntimeException $e) {
if (!$question->isHiddenFallback()) {
throw $e;
}
@@ -136,12 +150,12 @@ class QuestionHelper extends Helper
if (false === $ret) {
$ret = fgets($inputStream, 4096);
if (false === $ret) {
- throw new \RuntimeException('Aborted');
+ throw new RuntimeException('Aborted');
}
$ret = trim($ret);
}
} else {
- $ret = trim($this->autocomplete($output, $question, $inputStream));
+ $ret = trim($this->autocomplete($output, $question, $inputStream, is_array($autocomplete) ? $autocomplete : iterator_to_array($autocomplete, false)));
}
$ret = strlen($ret) > 0 ? $ret : $question->getDefault();
@@ -155,9 +169,6 @@ class QuestionHelper extends Helper
/**
* Outputs the question prompt.
- *
- * @param OutputInterface $output
- * @param Question $question
*/
protected function writePrompt(OutputInterface $output, Question $question)
{
@@ -182,9 +193,6 @@ class QuestionHelper extends Helper
/**
* Outputs an error message.
- *
- * @param OutputInterface $output
- * @param \Exception $error
*/
protected function writeError(OutputInterface $output, \Exception $error)
{
@@ -202,12 +210,13 @@ class QuestionHelper extends Helper
*
* @param OutputInterface $output
* @param Question $question
+ * @param resource $inputStream
+ * @param array $autocomplete
*
* @return string
*/
- private function autocomplete(OutputInterface $output, Question $question, $inputStream)
+ private function autocomplete(OutputInterface $output, Question $question, $inputStream, array $autocomplete)
{
- $autocomplete = $question->getAutocompleterValues();
$ret = '';
$i = 0;
@@ -235,7 +244,7 @@ class QuestionHelper extends Helper
$output->write("\033[1D");
}
- if ($i === 0) {
+ if (0 === $i) {
$ofs = -1;
$matches = $autocomplete;
$numMatches = count($matches);
@@ -303,7 +312,7 @@ class QuestionHelper extends Helper
// Save cursor position
$output->write("\0337");
// Write highlighted text
- $output->write('<hl>'.substr($matches[$ofs], $i).'</hl>');
+ $output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $i)).'</hl>');
// Restore cursor position
$output->write("\0338");
}
@@ -318,7 +327,8 @@ class QuestionHelper extends Helper
/**
* Gets a hidden response from user.
*
- * @param OutputInterface $output An Output instance
+ * @param OutputInterface $output An Output instance
+ * @param resource $inputStream The handler resource
*
* @return string The answer
*
@@ -364,7 +374,7 @@ class QuestionHelper extends Helper
}
if (false !== $shell = $this->getShell()) {
- $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword';
+ $readCmd = 'csh' === $shell ? 'set mypassword = $<' : 'read -r mypassword';
$command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
$value = rtrim(shell_exec($command));
$output->writeln('');
@@ -382,11 +392,11 @@ class QuestionHelper extends Helper
* @param OutputInterface $output An Output instance
* @param Question $question A Question instance
*
- * @return string The validated response
+ * @return mixed The validated response
*
* @throws \Exception In case the max number of attempts has been reached and no valid response has been given
*/
- private function validateAttempts($interviewer, OutputInterface $output, Question $question)
+ private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question)
{
$error = null;
$attempts = $question->getMaxAttempts();
@@ -397,6 +407,8 @@ class QuestionHelper extends Helper
try {
return call_user_func($question->getValidator(), $interviewer());
+ } catch (RuntimeException $e) {
+ throw $e;
} catch (\Exception $error) {
}
}
@@ -444,6 +456,6 @@ class QuestionHelper extends Helper
exec('stty 2>&1', $output, $exitcode);
- return self::$stty = $exitcode === 0;
+ return self::$stty = 0 === $exitcode;
}
}
diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
index 942278bd..cf071d59 100644
--- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
+++ b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php
@@ -18,6 +18,7 @@ use Symfony\Component\Console\Question\ChoiceQuestion;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Console\Formatter\OutputFormatter;
/**
* Symfony Style Guide compliant question helper.
@@ -28,6 +29,8 @@ class SymfonyQuestionHelper extends QuestionHelper
{
/**
* {@inheritdoc}
+ *
+ * To be removed in 4.0
*/
public function ask(InputInterface $input, OutputInterface $output, Question $question)
{
@@ -35,11 +38,13 @@ class SymfonyQuestionHelper extends QuestionHelper
$question->setValidator(function ($value) use ($validator) {
if (null !== $validator) {
$value = $validator($value);
- }
+ } else {
+ // make required
+ if (!is_array($value) && !is_bool($value) && 0 === strlen($value)) {
+ @trigger_error('The default question validator is deprecated since Symfony 3.3 and will not be used anymore in version 4.0. Set a custom question validator if needed.', E_USER_DEPRECATED);
- // make required
- if (!is_array($value) && !is_bool($value) && 0 === strlen($value)) {
- throw new LogicException('A value is required.');
+ throw new LogicException('A value is required.');
+ }
}
return $value;
@@ -53,7 +58,7 @@ class SymfonyQuestionHelper extends QuestionHelper
*/
protected function writePrompt(OutputInterface $output, Question $question)
{
- $text = $question->getQuestion();
+ $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion());
$default = $question->getDefault();
switch (true) {
@@ -67,14 +72,26 @@ class SymfonyQuestionHelper extends QuestionHelper
break;
+ case $question instanceof ChoiceQuestion && $question->isMultiselect():
+ $choices = $question->getChoices();
+ $default = explode(',', $default);
+
+ foreach ($default as $key => $value) {
+ $default[$key] = $choices[trim($value)];
+ }
+
+ $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, OutputFormatter::escape(implode(', ', $default)));
+
+ break;
+
case $question instanceof ChoiceQuestion:
$choices = $question->getChoices();
- $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, $choices[$default]);
+ $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, OutputFormatter::escape($choices[$default]));
break;
default:
- $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, $default);
+ $text = sprintf(' <info>%s</info> [<comment>%s</comment>]:', $text, OutputFormatter::escape($default));
}
$output->writeln($text);
diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php
index 13e4c3cf..905f7b87 100644
--- a/vendor/symfony/console/Helper/Table.php
+++ b/vendor/symfony/console/Helper/Table.php
@@ -26,29 +26,23 @@ class Table
{
/**
* Table headers.
- *
- * @var array
*/
private $headers = array();
/**
* Table rows.
- *
- * @var array
*/
private $rows = array();
/**
* Column widths cache.
- *
- * @var array
*/
- private $columnWidths = array();
+ private $effectiveColumnWidths = array();
/**
* Number of columns cache.
*
- * @var array
+ * @var int
*/
private $numberOfColumns;
@@ -67,6 +61,13 @@ class Table
*/
private $columnStyles = array();
+ /**
+ * User set column widths.
+ *
+ * @var array
+ */
+ private $columnWidths = array();
+
private static $styles;
public function __construct(OutputInterface $output)
@@ -100,7 +101,7 @@ class Table
*
* @param string $name The style name
*
- * @return TableStyle A TableStyle instance
+ * @return TableStyle
*/
public static function getStyleDefinition($name)
{
@@ -108,11 +109,11 @@ class Table
self::$styles = self::initStyles();
}
- if (!self::$styles[$name]) {
- throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
+ if (isset(self::$styles[$name])) {
+ return self::$styles[$name];
}
- return self::$styles[$name];
+ throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
}
/**
@@ -120,17 +121,11 @@ class Table
*
* @param TableStyle|string $name The style name or a TableStyle instance
*
- * @return Table
+ * @return $this
*/
public function setStyle($name)
{
- if ($name instanceof TableStyle) {
- $this->style = $name;
- } elseif (isset(self::$styles[$name])) {
- $this->style = self::$styles[$name];
- } else {
- throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
- }
+ $this->style = $this->resolveStyle($name);
return $this;
}
@@ -151,19 +146,13 @@ class Table
* @param int $columnIndex Column index
* @param TableStyle|string $name The style name or a TableStyle instance
*
- * @return Table
+ * @return $this
*/
public function setColumnStyle($columnIndex, $name)
{
- $columnIndex = intval($columnIndex);
+ $columnIndex = (int) $columnIndex;
- if ($name instanceof TableStyle) {
- $this->columnStyles[$columnIndex] = $name;
- } elseif (isset(self::$styles[$name])) {
- $this->columnStyles[$columnIndex] = self::$styles[$name];
- } else {
- throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
- }
+ $this->columnStyles[$columnIndex] = $this->resolveStyle($name);
return $this;
}
@@ -186,6 +175,38 @@ class Table
return $this->getStyle();
}
+ /**
+ * Sets the minimum width of a column.
+ *
+ * @param int $columnIndex Column index
+ * @param int $width Minimum column width in characters
+ *
+ * @return $this
+ */
+ public function setColumnWidth($columnIndex, $width)
+ {
+ $this->columnWidths[(int) $columnIndex] = (int) $width;
+
+ return $this;
+ }
+
+ /**
+ * Sets the minimum width of all columns.
+ *
+ * @param array $widths
+ *
+ * @return $this
+ */
+ public function setColumnWidths(array $widths)
+ {
+ $this->columnWidths = array();
+ foreach ($widths as $index => $width) {
+ $this->setColumnWidth($index, $width);
+ }
+
+ return $this;
+ }
+
public function setHeaders(array $headers)
{
$headers = array_values($headers);
@@ -242,6 +263,7 @@ class Table
* Renders table to output.
*
* Example:
+ * <code>
* +---------------+-----------------------+------------------+
* | ISBN | Title | Author |
* +---------------+-----------------------+------------------+
@@ -249,6 +271,7 @@ class Table
* | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
* | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
* +---------------+-----------------------+------------------+
+ * </code>
*/
public function render()
{
@@ -282,7 +305,7 @@ class Table
/**
* Renders horizontal header separator.
*
- * Example: +-----+-----------+-------+
+ * Example: <code>+-----+-----------+-------+</code>
*/
private function renderRowSeparator()
{
@@ -296,7 +319,7 @@ class Table
$markup = $this->style->getCrossingChar();
for ($column = 0; $column < $count; ++$column) {
- $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->columnWidths[$column]).$this->style->getCrossingChar();
+ $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->effectiveColumnWidths[$column]).$this->style->getCrossingChar();
}
$this->output->writeln(sprintf($this->style->getBorderFormat(), $markup));
@@ -313,7 +336,7 @@ class Table
/**
* Renders table row.
*
- * Example: | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
+ * Example: <code>| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |</code>
*
* @param array $row
* @param string $cellFormat
@@ -342,11 +365,11 @@ class Table
private function renderCell(array $row, $column, $cellFormat)
{
$cell = isset($row[$column]) ? $row[$column] : '';
- $width = $this->columnWidths[$column];
+ $width = $this->effectiveColumnWidths[$column];
if ($cell instanceof TableCell && $cell->getColspan() > 1) {
// add the width of the following columns(numbers of colspan).
foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) {
- $width += $this->getColumnSeparatorWidth() + $this->columnWidths[$nextColumn];
+ $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn];
}
}
@@ -399,7 +422,7 @@ class Table
if (!strstr($cell, "\n")) {
continue;
}
- $lines = explode("\n", $cell);
+ $lines = explode("\n", str_replace("\n", "<fg=default;bg=default>\n</>", $cell));
foreach ($lines as $lineKey => $line) {
if ($cell instanceof TableCell) {
$line = new TableCell($line, array('colspan' => $cell->getColspan()));
@@ -432,7 +455,7 @@ class Table
*
* @return array
*/
- private function fillNextRows($rows, $line)
+ private function fillNextRows(array $rows, $line)
{
$unmergedRows = array();
foreach ($rows[$line] as $column => $cell) {
@@ -440,7 +463,7 @@ class Table
$nbLines = $cell->getRowspan() - 1;
$lines = array($cell);
if (strstr($cell, "\n")) {
- $lines = explode("\n", $cell);
+ $lines = explode("\n", str_replace("\n", "<fg=default;bg=default>\n</>", $cell));
$nbLines = count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines;
$rows[$line][$column] = new TableCell($lines[0], array('colspan' => $cell->getColspan()));
@@ -448,10 +471,13 @@ class Table
}
// create a two dimensional array (rowspan x colspan)
- $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, ''), $unmergedRows);
+ $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, array()), $unmergedRows);
foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) {
$value = isset($lines[$unmergedRowKey - $line]) ? $lines[$unmergedRowKey - $line] : '';
$unmergedRows[$unmergedRowKey][$column] = new TableCell($value, array('colspan' => $cell->getColspan()));
+ if ($nbLines === $unmergedRowKey - $line) {
+ break;
+ }
}
}
}
@@ -480,8 +506,6 @@ class Table
/**
* fill cells for a row that contains colspan > 1.
*
- * @param array $row
- *
* @return array
*/
private function fillCells($row)
@@ -506,7 +530,7 @@ class Table
*
* @return array
*/
- private function copyRow($rows, $line)
+ private function copyRow(array $rows, $line)
{
$row = $rows[$line];
foreach ($row as $cellKey => $cellValue) {
@@ -522,8 +546,6 @@ class Table
/**
* Gets number of columns by row.
*
- * @param array $row
- *
* @return int
*/
private function getNumberOfColumns(array $row)
@@ -539,11 +561,9 @@ class Table
/**
* Gets list of columns for the given row.
*
- * @param array $row
- *
* @return array
*/
- private function getRowColumns($row)
+ private function getRowColumns(array $row)
{
$columns = range(0, $this->numberOfColumns - 1);
foreach ($row as $cellKey => $cell) {
@@ -558,10 +578,8 @@ class Table
/**
* Calculates columns widths.
- *
- * @param array $rows
*/
- private function calculateColumnsWidth($rows)
+ private function calculateColumnsWidth(array $rows)
{
for ($column = 0; $column < $this->numberOfColumns; ++$column) {
$lengths = array();
@@ -572,9 +590,10 @@ class Table
foreach ($row as $i => $cell) {
if ($cell instanceof TableCell) {
- $textLength = strlen($cell);
+ $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell);
+ $textLength = Helper::strlen($textContent);
if ($textLength > 0) {
- $contentColumns = str_split($cell, ceil($textLength / $cell->getColspan()));
+ $contentColumns = str_split($textContent, ceil($textLength / $cell->getColspan()));
foreach ($contentColumns as $position => $content) {
$row[$i + $position] = $content;
}
@@ -585,7 +604,7 @@ class Table
$lengths[] = $this->getCellWidth($row, $column);
}
- $this->columnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2;
+ $this->effectiveColumnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2;
}
}
@@ -609,14 +628,16 @@ class Table
*/
private function getCellWidth(array $row, $column)
{
+ $cellWidth = 0;
+
if (isset($row[$column])) {
$cell = $row[$column];
$cellWidth = Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);
-
- return $cellWidth;
}
- return 0;
+ $columnWidth = isset($this->columnWidths[$column]) ? $this->columnWidths[$column] : 0;
+
+ return max($cellWidth, $columnWidth);
}
/**
@@ -624,7 +645,7 @@ class Table
*/
private function cleanup()
{
- $this->columnWidths = array();
+ $this->effectiveColumnWidths = array();
$this->numberOfColumns = null;
}
@@ -660,4 +681,17 @@ class Table
'symfony-style-guide' => $styleGuide,
);
}
+
+ private function resolveStyle($name)
+ {
+ if ($name instanceof TableStyle) {
+ return $name;
+ }
+
+ if (isset(self::$styles[$name])) {
+ return self::$styles[$name];
+ }
+
+ throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name));
+ }
}
diff --git a/vendor/symfony/console/Helper/TableCell.php b/vendor/symfony/console/Helper/TableCell.php
index 69442d42..6fc7d3b9 100644
--- a/vendor/symfony/console/Helper/TableCell.php
+++ b/vendor/symfony/console/Helper/TableCell.php
@@ -18,14 +18,7 @@ use Symfony\Component\Console\Exception\InvalidArgumentException;
*/
class TableCell
{
- /**
- * @var string
- */
private $value;
-
- /**
- * @var array
- */
private $options = array(
'rowspan' => 1,
'colspan' => 1,
@@ -37,6 +30,10 @@ class TableCell
*/
public function __construct($value = '', array $options = array())
{
+ if (is_numeric($value) && !is_string($value)) {
+ $value = (string) $value;
+ }
+
$this->value = $value;
// check option names
diff --git a/vendor/symfony/console/Helper/TableHelper.php b/vendor/symfony/console/Helper/TableHelper.php
deleted file mode 100644
index 3c7a1a78..00000000
--- a/vendor/symfony/console/Helper/TableHelper.php
+++ /dev/null
@@ -1,269 +0,0 @@
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\Console\Helper;
-
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Output\NullOutput;
-use Symfony\Component\Console\Exception\InvalidArgumentException;
-
-/**
- * Provides helpers to display table output.
- *
- * @author Саша Стаменковић <umpirsky@gmail.com>
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @deprecated since version 2.5, to be removed in 3.0
- * Use {@link Table} instead.
- */
-class TableHelper extends Helper
-{
- const LAYOUT_DEFAULT = 0;
- const LAYOUT_BORDERLESS = 1;
- const LAYOUT_COMPACT = 2;
-
- /**
- * @var Table
- */
- private $table;
-
- public function __construct($triggerDeprecationError = true)
- {
- if ($triggerDeprecationError) {
- @trigger_error('The '.__CLASS__.' class is deprecated since version 2.5 and will be removed in 3.0. Use the Symfony\Component\Console\Helper\Table class instead.', E_USER_DEPRECATED);
- }
-
- $this->table = new Table(new NullOutput());
- }
-
- /**
- * Sets table layout type.
- *
- * @param int $layout self::LAYOUT_*
- *
- * @return TableHelper
- *
- * @throws InvalidArgumentException when the table layout is not known
- */
- public function setLayout($layout)
- {
- switch ($layout) {
- case self::LAYOUT_BORDERLESS:
- $this->table->setStyle('borderless');
- break;
-
- case self::LAYOUT_COMPACT:
- $this->table->setStyle('compact');
- break;
-
- case self::LAYOUT_DEFAULT:
- $this->table->setStyle('default');
- break;
-
- default:
- throw new InvalidArgumentException(sprintf('Invalid table layout "%s".', $layout));
- }
-
- return $this;
- }
-
- public function setHeaders(array $headers)
- {
- $this->table->setHeaders($headers);
-
- return $this;
- }
-
- public function setRows(array $rows)
- {
- $this->table->setRows($rows);
-
- return $this;
- }
-
- public function addRows(array $rows)
- {
- $this->table->addRows($rows);
-
- return $this;
- }
-
- public function addRow(array $row)
- {
- $this->table->addRow($row);
-
- return $this;
- }
-
- public function setRow($column, array $row)
- {
- $this->table->setRow($column, $row);
-
- return $this;
- }
-
- /**
- * Sets padding character, used for cell padding.
- *
- * @param string $paddingChar
- *
- * @return TableHelper
- */
- public function setPaddingChar($paddingChar)
- {
- $this->table->getStyle()->setPaddingChar($paddingChar);
-
- return $this;
- }
-
- /**
- * Sets horizontal border character.
- *
- * @param string $horizontalBorderChar
- *
- * @return TableHelper
- */
- public function setHorizontalBorderChar($horizontalBorderChar)
- {
- $this->table->getStyle()->setHorizontalBorderChar($horizontalBorderChar);
-
- return $this;
- }
-
- /**
- * Sets vertical border character.
- *
- * @param string $verticalBorderChar
- *
- * @return TableHelper
- */
- public function setVerticalBorderChar($verticalBorderChar)
- {
- $this->table->getStyle()->setVerticalBorderChar($verticalBorderChar);
-
- return $this;
- }
-
- /**
- * Sets crossing character.
- *
- * @param string $crossingChar
- *
- * @return TableHelper
- */
- public function setCrossingChar($crossingChar)
- {
- $this->table->getStyle()->setCrossingChar($crossingChar);
-
- return $this;
- }
-
- /**
- * Sets header cell format.
- *
- * @param string $cellHeaderFormat
- *
- * @return TableHelper
- */
- public function setCellHeaderFormat($cellHeaderFormat)
- {
- $this->table->getStyle()->setCellHeaderFormat($cellHeaderFormat);
-
- return $this;
- }
-
- /**
- * Sets row cell format.
- *
- * @param string $cellRowFormat
- *
- * @return TableHelper
- */
- public function setCellRowFormat($cellRowFormat)
- {
- $this->table->getStyle()->setCellHeaderFormat($cellRowFormat);
-
- return $this;
- }
-
- /**
- * Sets row cell content format.
- *
- * @param string $cellRowContentFormat
- *
- * @return TableHelper
- */
- public function setCellRowContentFormat($cellRowContentFormat)
- {
- $this->table->getStyle()->setCellRowContentFormat($cellRowContentFormat);
-
- return $this;
- }
-
- /**
- * Sets table border format.
- *
- * @param string $borderFormat
- *
- * @return TableHelper
- */
- public function setBorderFormat($borderFormat)
- {
- $this->table->getStyle()->setBorderFormat($borderFormat);
-
- return $this;
- }
-
- /**
- * Sets cell padding type.
- *
- * @param int $padType STR_PAD_*
- *
- * @return TableHelper
- */
- public function setPadType($padType)
- {
- $this->table->getStyle()->setPadType($padType);
-
- return $this;
- }
-
- /**
- * Renders table to output.
- *
- * Example:
- * +---------------+-----------------------+------------------+
- * | ISBN | Title | Author |
- * +---------------+-----------------------+------------------+
- * | 99921-58-10-7 | Divine Comedy | Dante Alighieri |
- * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
- * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
- * +---------------+-----------------------+------------------+
- *
- * @param OutputInterface $output
- */
- public function render(OutputInterface $output)
- {
- $p = new \ReflectionProperty($this->table, 'output');
- $p->setAccessible(true);
- $p->setValue($this->table, $output);
-
- $this->table->render();
- }
-
- /**
- * {@inheritdoc}
- */
- public function getName()
- {
- return 'table';
- }
-}
diff --git a/vendor/symfony/console/Helper/TableSeparator.php b/vendor/symfony/console/Helper/TableSeparator.php
index 8cbbc661..c7b8dc9c 100644
--- a/vendor/symfony/console/Helper/TableSeparator.php
+++ b/vendor/symfony/console/Helper/TableSeparator.php
@@ -18,10 +18,6 @@ namespace Symfony\Component\Console\Helper;
*/
class TableSeparator extends TableCell
{
- /**
- * @param string $value
- * @param array $options
- */
public function __construct(array $options = array())
{
parent::__construct('', $options);
diff --git a/vendor/symfony/console/Helper/TableStyle.php b/vendor/symfony/console/Helper/TableStyle.php
index d7e28ff2..2999c76f 100644
--- a/vendor/symfony/console/Helper/TableStyle.php
+++ b/vendor/symfony/console/Helper/TableStyle.php
@@ -37,7 +37,7 @@ class TableStyle
*
* @param string $paddingChar
*
- * @return TableStyle
+ * @return $this
*/
public function setPaddingChar($paddingChar)
{
@@ -65,7 +65,7 @@ class TableStyle
*
* @param string $horizontalBorderChar
*
- * @return TableStyle
+ * @return $this
*/
public function setHorizontalBorderChar($horizontalBorderChar)
{
@@ -89,7 +89,7 @@ class TableStyle
*
* @param string $verticalBorderChar
*
- * @return TableStyle
+ * @return $this
*/
public function setVerticalBorderChar($verticalBorderChar)
{
@@ -113,7 +113,7 @@ class TableStyle
*
* @param string $crossingChar
*
- * @return TableStyle
+ * @return $this
*/
public function setCrossingChar($crossingChar)
{
@@ -137,7 +137,7 @@ class TableStyle
*
* @param string $cellHeaderFormat
*
- * @return TableStyle
+ * @return $this
*/
public function setCellHeaderFormat($cellHeaderFormat)
{
@@ -161,7 +161,7 @@ class TableStyle
*
* @param string $cellRowFormat
*
- * @return TableStyle
+ * @return $this
*/
public function setCellRowFormat($cellRowFormat)
{
@@ -185,7 +185,7 @@ class TableStyle
*
* @param string $cellRowContentFormat
*
- * @return TableStyle
+ * @return $this
*/
public function setCellRowContentFormat($cellRowContentFormat)
{
@@ -209,7 +209,7 @@ class TableStyle
*
* @param string $borderFormat
*
- * @return TableStyle
+ * @return $this
*/
public function setBorderFormat($borderFormat)
{
@@ -233,7 +233,7 @@ class TableStyle
*
* @param int $padType STR_PAD_*
*
- * @return TableStyle
+ * @return $this
*/
public function setPadType($padType)
{