Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / drush / drush / src / Commands / core / PhpCommands.php
diff --git a/vendor/drush/drush/src/Commands/core/PhpCommands.php b/vendor/drush/drush/src/Commands/core/PhpCommands.php
new file mode 100644 (file)
index 0000000..0d32e18
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+namespace Drush\Commands\core;
+
+use Drush\Commands\DrushCommands;
+use Symfony\Component\Finder\Finder;
+
+class PhpCommands extends DrushCommands
+{
+
+    /**
+     * Evaluate arbitrary php code after bootstrapping Drupal (if available).
+     *
+     * @command php:eval
+     * @param $code PHP code
+     * @usage drush php:eval 'variable_set("hello", "world");'
+     *   Sets the hello variable using Drupal API.'
+     * @usage drush php:eval '$node = node_load(1); print $node->title;'
+     *   Loads node with nid 1 and then prints its title.
+     * @usage drush php:eval "file_unmanaged_copy(\'$HOME/Pictures/image.jpg\', \'public://image.jpg\');"
+     *   Copies a file whose path is determined by an environment\'s variable. Note the use of double quotes so the variable $HOME gets replaced by its value.
+     * @usage drush php:eval "node_access_rebuild();"
+     *   Rebuild node access permissions.
+     * @aliases eval,ev,php-eval
+     * @bootstrap max
+     */
+    public function evaluate($code, $options = ['format' => 'var_export'])
+    {
+        return eval($code . ';');
+    }
+
+    /**
+     * Run php a script after a full Drupal bootstrap.
+     *
+     * A useful alternative to eval command when your php is lengthy or you
+     * can't be bothered to figure out bash quoting. If you plan to share a
+     * script with others, consider making a full Drush command instead, since
+     * that's more self-documenting.  Drush provides commandline options to the
+     * script via a variable called $extra.
+     *
+     * @command php:script
+     * @option script-path Additional paths to search for scripts, separated by
+     *   : (Unix-based systems) or ; (Windows).
+     * @usage drush php:script example
+     *   --script-path=/path/to/scripts:/another/path Run a script named
+     *   example.php from specified paths
+     * @usage drush php:script
+     *   List all available scripts.
+     * @usage drush php:script foo -- apple --cider
+     *  Run foo.php script with argument 'apple' and option 'cider'. Note the
+     *   -- separator.
+     * @aliases scr,php-script
+     * @bootstrap max
+     * @throws \Exception
+     */
+    public function script(array $extra, $options = ['format' => 'var_export', 'script-path' => self::REQ])
+    {
+        $found = false;
+        $script = array_shift($extra);
+
+        if ($script == '-') {
+            return eval(stream_get_contents(STDIN));
+        } elseif (file_exists($script)) {
+            $found = $script;
+        } else {
+            // Array of paths to search for scripts
+            $searchpath['cwd'] = $this->getConfig()->cwd();
+
+            // Additional script paths, specified by 'script-path' option
+            if ($script_path = $options['script-path']) {
+                foreach (explode(PATH_SEPARATOR, $script_path) as $path) {
+                    $searchpath[] = $path;
+                }
+            }
+            $this->logger()->debug(dt('Searching for scripts in ') . implode(',', $searchpath));
+
+            if (empty($script)) {
+                $all = [];
+                // List all available scripts.
+                $files = Finder::create()
+                    ->files()
+                    ->name('*.php')
+                    ->depth(0)
+                    ->in($searchpath);
+                foreach ($files as $file) {
+                    $all[] = $file->getRelativePathname();
+                }
+                return implode("\n", $all);
+            } else {
+                // Execute the specified script.
+                foreach ($searchpath as $path) {
+                    $script_filename = $path . '/' . $script;
+                    if (file_exists($script_filename . '.php')) {
+                        $script_filename .= '.php';
+                    }
+                    if (file_exists($script_filename)) {
+                        $found = $script_filename;
+                        break;
+                    }
+                    $all[] = $script_filename;
+                }
+                if (!$found) {
+                    throw new \Exception(dt('Unable to find any of the following: @files', ['@files' => implode(', ', $all)]));
+                }
+            }
+        }
+
+        if ($found) {
+            $return = include($found);
+            // 1 just means success so don't return it.
+            // http://us3.php.net/manual/en/function.include.php#example-120
+            if ($return !== 1) {
+                return $return;
+            }
+        }
+    }
+}