Version 1
[yaffs-website] / vendor / drush / drush / lib / Drush / Command / Commandfiles.php
diff --git a/vendor/drush/drush/lib/Drush/Command/Commandfiles.php b/vendor/drush/drush/lib/Drush/Command/Commandfiles.php
new file mode 100644 (file)
index 0000000..516f71f
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drush\Command\Commandfiles.
+ */
+
+namespace Drush\Command;
+
+/**
+ * Default commandfiles implementation.
+ *
+ * This class manages the list of commandfiles that are active
+ * in Drush for the current command invocation.
+ */
+class Commandfiles implements CommandfilesInterface {
+  protected $cache;
+  protected $deferred;
+
+  function __construct() {
+    $this->cache = array();
+    $this->deferred = array();
+  }
+
+  function get() {
+       return $this->cache;
+  }
+
+  function deferred() {
+       return $this->deferred;
+  }
+
+  function sort() {
+       ksort($this->cache);
+  }
+
+  function add($commandfile) {
+         $load_command = FALSE;
+
+         $module = basename($commandfile);
+         $module = preg_replace('/\.*drush[0-9]*\.inc/', '', $module);
+         $module_versionless = preg_replace('/\.d([0-9]+)$/', '', $module);
+         if (!isset($this->cache[$module_versionless])) {
+           $drupal_version = '';
+           if (preg_match('/\.d([0-9]+)$/', $module, $matches)) {
+             $drupal_version = $matches[1];
+           }
+           if (empty($drupal_version)) {
+             $load_command = TRUE;
+           }
+           else {
+             if (function_exists('drush_drupal_major_version') && ($drupal_version == drush_drupal_major_version())) {
+               $load_command = TRUE;
+             }
+             else {
+                   // Signal that we should try again on
+                   // the next bootstrap phase.
+                   $this->deferred[$module] = $commandfile;    
+             }
+           }
+           if ($load_command) {
+             $this->cache[$module_versionless] = $commandfile;
+             require_once $commandfile;
+             unset($this->deferred[$module]);
+           }
+         }
+         return $load_command;
+  }
+}