summaryrefslogtreecommitdiff
path: root/vendor/symfony/console/Helper/DebugFormatterHelper.php
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2017-10-25 16:22:10 -0700
committerFrederic Guillot <fred@kanboard.net>2017-10-25 16:22:10 -0700
commit9e2b2a32fd0e967ad3184e9a5d091a29953acb91 (patch)
tree00822e24aa1110c73ca455a8d096ef296c008cbc /vendor/symfony/console/Helper/DebugFormatterHelper.php
parentc507c5416251c505cb3e088a03c6664bed73c812 (diff)
Include composer dependencies in repo
Diffstat (limited to 'vendor/symfony/console/Helper/DebugFormatterHelper.php')
-rw-r--r--vendor/symfony/console/Helper/DebugFormatterHelper.php127
1 files changed, 127 insertions, 0 deletions
diff --git a/vendor/symfony/console/Helper/DebugFormatterHelper.php b/vendor/symfony/console/Helper/DebugFormatterHelper.php
new file mode 100644
index 00000000..1119b795
--- /dev/null
+++ b/vendor/symfony/console/Helper/DebugFormatterHelper.php
@@ -0,0 +1,127 @@
+<?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;
+
+/**
+ * Helps outputting debug information when running an external program from a command.
+ *
+ * An external program can be a Process, an HTTP request, or anything else.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class DebugFormatterHelper extends Helper
+{
+ private $colors = array('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default');
+ private $started = array();
+ private $count = -1;
+
+ /**
+ * Starts a debug formatting session.
+ *
+ * @param string $id The id of the formatting session
+ * @param string $message The message to display
+ * @param string $prefix The prefix to use
+ *
+ * @return string
+ */
+ public function start($id, $message, $prefix = 'RUN')
+ {
+ $this->started[$id] = array('border' => ++$this->count % count($this->colors));
+
+ return sprintf("%s<bg=blue;fg=white> %s </> <fg=blue>%s</>\n", $this->getBorder($id), $prefix, $message);
+ }
+
+ /**
+ * Adds progress to a formatting session.
+ *
+ * @param string $id The id of the formatting session
+ * @param string $buffer The message to display
+ * @param bool $error Whether to consider the buffer as error
+ * @param string $prefix The prefix for output
+ * @param string $errorPrefix The prefix for error output
+ *
+ * @return string
+ */
+ public function progress($id, $buffer, $error = false, $prefix = 'OUT', $errorPrefix = 'ERR')
+ {
+ $message = '';
+
+ if ($error) {
+ if (isset($this->started[$id]['out'])) {
+ $message .= "\n";
+ unset($this->started[$id]['out']);
+ }
+ if (!isset($this->started[$id]['err'])) {
+ $message .= sprintf('%s<bg=red;fg=white> %s </> ', $this->getBorder($id), $errorPrefix);
+ $this->started[$id]['err'] = true;
+ }
+
+ $message .= str_replace("\n", sprintf("\n%s<bg=red;fg=white> %s </> ", $this->getBorder($id), $errorPrefix), $buffer);
+ } else {
+ if (isset($this->started[$id]['err'])) {
+ $message .= "\n";
+ unset($this->started[$id]['err']);
+ }
+ if (!isset($this->started[$id]['out'])) {
+ $message .= sprintf('%s<bg=green;fg=white> %s </> ', $this->getBorder($id), $prefix);
+ $this->started[$id]['out'] = true;
+ }
+
+ $message .= str_replace("\n", sprintf("\n%s<bg=green;fg=white> %s </> ", $this->getBorder($id), $prefix), $buffer);
+ }
+
+ return $message;
+ }
+
+ /**
+ * Stops a formatting session.
+ *
+ * @param string $id The id of the formatting session
+ * @param string $message The message to display
+ * @param bool $successful Whether to consider the result as success
+ * @param string $prefix The prefix for the end output
+ *
+ * @return string
+ */
+ public function stop($id, $message, $successful, $prefix = 'RES')
+ {
+ $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : '';
+
+ if ($successful) {
+ return sprintf("%s%s<bg=green;fg=white> %s </> <fg=green>%s</>\n", $trailingEOL, $this->getBorder($id), $prefix, $message);
+ }
+
+ $message = sprintf("%s%s<bg=red;fg=white> %s </> <fg=red>%s</>\n", $trailingEOL, $this->getBorder($id), $prefix, $message);
+
+ unset($this->started[$id]['out'], $this->started[$id]['err']);
+
+ return $message;
+ }
+
+ /**
+ * @param string $id The id of the formatting session
+ *
+ * @return string
+ */
+ private function getBorder($id)
+ {
+ return sprintf('<bg=%s> </>', $this->colors[$this->started[$id]['border']]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'debug_formatter';
+ }
+}