Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Commands / core / CoreCommands.php
diff --git a/vendor/drush/drush/src/Commands/core/CoreCommands.php b/vendor/drush/drush/src/Commands/core/CoreCommands.php
new file mode 100644 (file)
index 0000000..658553e
--- /dev/null
@@ -0,0 +1,147 @@
+<?php
+namespace Drush\Commands\core;
+
+use Consolidation\OutputFormatters\StructuredData\PropertyList;
+use Drush\Commands\DrushCommands;
+use Drush\Drush;
+use Consolidation\OutputFormatters\StructuredData\RowsOfFields;
+use Drush\SiteAlias\SiteAliasManagerAwareInterface;
+use Drush\SiteAlias\SiteAliasManagerAwareTrait;
+
+class CoreCommands extends DrushCommands implements SiteAliasManagerAwareInterface
+{
+
+    use SiteAliasManagerAwareTrait;
+
+    /**
+     * All global options.
+     *
+     * @command core:global-options
+     * @hidden
+     * @topic
+     * @table-style default
+     * @field-labels
+     *   name: Name
+     *   description: Description
+     * @default-fields name,description
+     * @aliases core-global-options
+     *
+     * @return \Consolidation\OutputFormatters\StructuredData\RowsOfFields
+     */
+    public function globalOptions($options = ['format' => 'table'])
+    {
+        $application = Drush::getApplication();
+        $def = $application->getDefinition();
+        foreach ($def->getOptions() as $key => $value) {
+            $name = '--'. $key;
+            if ($value->getShortcut()) {
+                $name = '-' . $value->getShortcut() . ', ' . $name;
+            }
+            $rows[] = [
+                'name' => $name,
+                'description' => $value->getDescription(),
+            ];
+        }
+
+        // Also document the keys that are recognized by PreflightArgs. It would be possible to redundantly declare
+        // those as global options. We don't do that for now, to avoid confusion.
+        $ancient = drush_get_global_options();
+        foreach (['config', 'alias-path', 'include', 'local', 'backend', 'strict', 'ssh-options'] as $name) {
+            $rows[] = [
+                'name' => '--' . $name,
+                'description' => $ancient[$name]['description'],
+            ];
+        }
+        usort($rows, function ($a, $b) {
+            return strnatcmp($a['name'], $b['name']);
+        });
+        return new RowsOfFields($rows);
+    }
+
+    /**
+     * Show Drush version.
+     *
+     * @command version
+     * @table-style compact
+     * @list-delimiter :
+     * @field-labels
+     *   drush-version: Drush version
+     *
+     * @return \Consolidation\OutputFormatters\StructuredData\PropertyList
+     *
+     */
+    public function version($options = ['format' => 'table'])
+    {
+        return new PropertyList(['drush-version' => Drush::getVersion()]);
+    }
+
+    /**
+     * Execute a shell command. Usually used with a site alias.
+     *
+     * Used by shell aliases that start with !.
+     *
+     * @command core:execute
+     * @param $args The shell command to be executed.
+     * @option escape Escape parameters before executing them with the shell. Default is escape; use --no-escape to disable.
+     * @optionset_proc_build
+     * @handle-remote-commands
+     * @usage drush core:execute git pull origin rebase -- --no-ff
+     *   Retrieve latest code from git
+     * @aliases exec,execute,core-execute
+     * @topics docs:aliases
+     */
+    public function execute(array $args, array $options = ['escape' => true])
+    {
+        $result = true;
+        if ($options['escape']) {
+            for ($x = 0; $x < count($args); $x++) {
+                // escape all args except for command separators.
+                if (!in_array($args[$x], ['&&', '||', ';'])) {
+                    $args[$x] = drush_escapeshellarg($args[$x]);
+                }
+            }
+        }
+        $cmd = implode(' ', $args);
+        // If we selected a Drupal site, then cwd to the site root prior to exec
+        $cwd = false;
+        if ($selected_root = Drush::bootstrapManager()->getRoot()) {
+            if (is_dir($selected_root)) {
+                $cwd = getcwd();
+                drush_op('chdir', $selected_root);
+            }
+        }
+
+        $aliasRecord = $this->siteAliasManager()->getSelf();
+        if ($aliasRecord) {
+            $result = $this->executeCmd($aliasRecord, $cmd);
+        } else {
+            // Must be a local command.
+            $result = (drush_shell_proc_open($cmd) == 0);
+        }
+
+        // Restore the cwd if we changed it
+        if ($cwd) {
+            drush_op('chdir', $cwd);
+        }
+
+        if (!$result) {
+            throw new \Exception(dt("Command !command failed.", ['!command' => $cmd]));
+        }
+        return $result;
+    }
+
+    /**
+     * Helper function for drush_core_execute: run one shell command
+     */
+    protected function executeCmd($site, $cmd)
+    {
+        if ($site->isRemote()) {
+            // Remote, so execute an ssh command with a bash fragment at the end.
+            $exec = drush_shell_proc_build($site, $cmd, true);
+            return (drush_shell_proc_open($exec) == 0);
+        } elseif ($site->hasRoot() && is_dir($site->root())) {
+            return (drush_shell_proc_open('cd ' . drush_escapeshellarg($site->root()) . ' && ' . $cmd) == 0);
+        }
+        return (drush_shell_proc_open($cmd) == 0);
+    }
+}