Version 1
[yaffs-website] / vendor / drupal-composer / drupal-scaffold / src / Plugin.php
diff --git a/vendor/drupal-composer/drupal-scaffold/src/Plugin.php b/vendor/drupal-composer/drupal-scaffold/src/Plugin.php
new file mode 100644 (file)
index 0000000..3424afd
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * @file
+ * Contains DrupalComposer\DrupalScaffold\Plugin.
+ */
+
+namespace DrupalComposer\DrupalScaffold;
+
+use Composer\Composer;
+use Composer\EventDispatcher\EventSubscriberInterface;
+use Composer\Installer\PackageEvents;
+use Composer\IO\IOInterface;
+use Composer\Plugin\PluginInterface;
+use Composer\Installer\PackageEvent;
+use Composer\Script\ScriptEvents;
+
+/**
+ * Composer plugin for handling drupal scaffold.
+ */
+class Plugin implements PluginInterface, EventSubscriberInterface {
+
+  /**
+   * @var \DrupalComposer\DrupalScaffold\Handler
+   */
+  protected $handler;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function activate(Composer $composer, IOInterface $io) {
+    // We use a separate PluginScripts object. This way we separate
+    // functionality and also avoid some debug issues with the plugin being
+    // copied on initialisation.
+    // @see \Composer\Plugin\PluginManager::registerPackage()
+    $this->handler = new Handler($composer, $io);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function getSubscribedEvents() {
+    return array(
+      PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
+      PackageEvents::POST_PACKAGE_UPDATE => 'postPackage',
+      //PackageEvents::POST_PACKAGE_UNINSTALL => 'postPackage',
+      //ScriptEvents::POST_INSTALL_CMD => 'postCmd',
+      ScriptEvents::POST_UPDATE_CMD => 'postCmd',
+    );
+  }
+
+  /**
+   * Post package event behaviour.
+   *
+   * @param \Composer\Installer\PackageEvent $event
+   */
+  public function postPackage(PackageEvent $event) {
+    $this->handler->onPostPackageEvent($event);
+  }
+
+  /**
+   * Post command event callback.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public function postCmd(\Composer\Script\Event $event) {
+    $this->handler->onPostCmdEvent($event);
+  }
+
+  /**
+   * Script callback for putting in composer scripts to download the
+   * scaffold files.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function scaffold(\Composer\Script\Event $event) {
+    $handler = new Handler($event->getComposer(), $event->getIO());
+    $handler->downloadScaffold();
+    // Generate the autoload.php file after generating the scaffold files.
+    $handler->generateAutoload();
+  }
+}