Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / robo / src / Task / Development / OpenBrowser.php
diff --git a/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php b/vendor/consolidation/robo/src/Task/Development/OpenBrowser.php
new file mode 100644 (file)
index 0000000..ea01b32
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+namespace Robo\Task\Development;
+
+use Robo\Task\BaseTask;
+use Robo\Common\ProcessUtils;
+use Robo\Result;
+
+/**
+ * Opens the default's user browser
+ * code inspired from openBrowser() function in https://github.com/composer/composer/blob/master/src/Composer/Command/HomeCommand.php
+ *
+ * ``` php
+ * <?php
+ * // open one browser window
+ * $this->taskOpenBrowser('http://localhost')
+ *  ->run();
+ *
+ * // open two browser windows
+ * $this->taskOpenBrowser([
+ *     'http://localhost/mysite',
+ *     'http://localhost/mysite2'
+ *   ])
+ *   ->run();
+ * ```
+ */
+class OpenBrowser extends BaseTask
+{
+    /**
+     * @var string[]
+     */
+    protected $urls = [];
+
+    /**
+     * @param string|array $url
+     */
+    public function __construct($url)
+    {
+        $this->urls = (array) $url;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function run()
+    {
+        $openCommand = $this->getOpenCommand();
+
+        if (empty($openCommand)) {
+            return Result::error($this, 'no suitable browser opening command found');
+        }
+
+        foreach ($this->urls as $url) {
+            passthru(sprintf($openCommand, ProcessUtils::escapeArgument($url)));
+            $this->printTaskInfo('Opened {url}', ['url' => $url]);
+        }
+
+        return Result::success($this);
+    }
+
+    /**
+     * @return null|string
+     */
+    private function getOpenCommand()
+    {
+        if (defined('PHP_WINDOWS_VERSION_MAJOR')) {
+            return 'start "web" explorer "%s"';
+        }
+
+        passthru('which xdg-open', $linux);
+        passthru('which open', $osx);
+
+        if (0 === $linux) {
+            return 'xdg-open %s';
+        }
+
+        if (0 === $osx) {
+            return 'open %s';
+        }
+    }
+}