Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / robo / src / Common / ProgressIndicatorAwareTrait.php
diff --git a/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php b/vendor/consolidation/robo/src/Common/ProgressIndicatorAwareTrait.php
new file mode 100644 (file)
index 0000000..060e039
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+namespace Robo\Common;
+
+use Robo\Contract\ProgressIndicatorAwareInterface;
+use Robo\Contract\VerbosityThresholdInterface;
+
+trait ProgressIndicatorAwareTrait
+{
+    use Timer;
+
+    /**
+     * @var null|\Robo\Common\ProgressIndicator
+     */
+    protected $progressIndicator;
+
+    /**
+     * @return int
+     */
+    public function progressIndicatorSteps()
+    {
+        return 0;
+    }
+
+    /**
+     * @param null|\Robo\Common\ProgressIndicator $progressIndicator
+     *
+     * @return ProgressIndicatorAwareInterface
+     */
+    public function setProgressIndicator($progressIndicator)
+    {
+        $this->progressIndicator = $progressIndicator;
+
+        return $this;
+    }
+
+    /**
+     * @return null|bool
+     */
+    protected function hideProgressIndicator()
+    {
+        if (!$this->progressIndicator) {
+            return;
+        }
+        return $this->progressIndicator->hideProgressIndicator();
+    }
+
+    protected function showProgressIndicator()
+    {
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $this->progressIndicator->showProgressIndicator();
+    }
+
+    /**
+     * @param bool $visible
+     */
+    protected function restoreProgressIndicator($visible)
+    {
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $this->progressIndicator->restoreProgressIndicator($visible);
+    }
+
+    /**
+     * @return int
+     */
+    protected function getTotalExecutionTime()
+    {
+        if (!$this->progressIndicator) {
+            return 0;
+        }
+        return $this->progressIndicator->getExecutionTime();
+    }
+
+    protected function startProgressIndicator()
+    {
+        $this->startTimer();
+        if ($this instanceof VerbosityThresholdInterface
+            && !$this->verbosityMeetsThreshold()) {
+            return;
+        }
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $totalSteps = $this->progressIndicatorSteps();
+        $this->progressIndicator->startProgressIndicator($totalSteps, $this);
+    }
+
+    /**
+     * @return bool
+     */
+    protected function inProgress()
+    {
+        if (!$this->progressIndicator) {
+            return false;
+        }
+        return $this->progressIndicator->inProgress();
+    }
+
+    protected function stopProgressIndicator()
+    {
+        $this->stopTimer();
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $this->progressIndicator->stopProgressIndicator($this);
+    }
+
+    protected function disableProgressIndicator()
+    {
+        $this->stopTimer();
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $this->progressIndicator->disableProgressIndicator();
+    }
+
+    protected function detatchProgressIndicator()
+    {
+        $this->setProgressIndicator(null);
+    }
+
+    /**
+     * @param int $steps
+     */
+    protected function advanceProgressIndicator($steps = 1)
+    {
+        if (!$this->progressIndicator) {
+            return;
+        }
+        $this->progressIndicator->advanceProgressIndicator($steps);
+    }
+}