Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Commands / DrushCommands.php
diff --git a/vendor/drush/drush/src/Commands/DrushCommands.php b/vendor/drush/drush/src/Commands/DrushCommands.php
new file mode 100644 (file)
index 0000000..b5ee774
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+namespace Drush\Commands;
+
+use Drush\Style\DrushStyle;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerAwareTrait;
+use Psr\Log\LoggerInterface;
+use Robo\Common\ConfigAwareTrait;
+use Robo\Contract\ConfigAwareInterface;
+use Robo\Contract\IOAwareInterface;
+use Robo\Common\IO;
+use Symfony\Component\Console\Input\InputOption;
+
+abstract class DrushCommands implements IOAwareInterface, LoggerAwareInterface, ConfigAwareInterface
+{
+    // This is more readable.
+    const REQ=InputOption::VALUE_REQUIRED;
+    const OPT=InputOption::VALUE_OPTIONAL;
+
+    use LoggerAwareTrait;
+    use ConfigAwareTrait {
+        // Move aside this method so we can replace. See https://stackoverflow.com/a/37687295.
+        getConfig as ConfigAwareGetConfig;
+    }
+    use IO {
+        io as roboIo;
+    }
+
+    public function __construct()
+    {
+    }
+
+    /**
+     * Returns a logger object.
+     *
+     * @return LoggerInterface
+     */
+    protected function logger()
+    {
+        return $this->logger;
+    }
+
+    /**
+     * Override Robo's IO function with our custom style.
+     */
+    protected function io()
+    {
+        if (!$this->io) {
+            // Specify our own Style class when needed.
+            $this->io = new DrushStyle($this->input(), $this->output());
+        }
+        return $this->io;
+    }
+
+    /**
+     * Replaces same method in ConfigAwareTrait in order to provide a
+     * DrushConfig as return type. Helps with IDE completion.
+     *
+     * @see https://stackoverflow.com/a/37687295.
+     *
+     * @return \Drush\Config\DrushConfig
+     */
+    public function getConfig()
+    {
+        return $this->ConfigAwareGetConfig();
+    }
+
+    /**
+     * Print the contents of a file.
+     *
+     * @param string $file
+     *   Full path to a file.
+     */
+    protected function printFile($file)
+    {
+        if ((substr($file, -4) == ".htm") || (substr($file, -5) == ".html")) {
+            $tmp_file = drush_tempnam(basename($file));
+            file_put_contents($tmp_file, drush_html_to_text(file_get_contents($file)));
+            $file = $tmp_file;
+        }
+
+        if (self::input()->isInteractive()) {
+            if (drush_shell_exec_interactive("less %s", $file)) {
+                return;
+            } elseif (drush_shell_exec_interactive("more %s", $file)) {
+                return;
+            } else {
+                $this->output()->writeln(file_get_contents($file));
+            }
+        }
+    }
+}