<?php namespace LakeDrops\Docker4Drupal; use Composer\Composer; use Composer\EventDispatcher\EventSubscriberInterface; use Composer\IO\IOInterface; use Composer\Plugin\PluginInterface; use Composer\Script\Event; use Composer\Script\ScriptEvents; /** * Composer plugin for handling docker4drupal setup. */ class Plugin implements PluginInterface, EventSubscriberInterface { /** * The handler object to configure the project for docker. * * @var \LakeDrops\Docker4Drupal\Handler */ protected $handler; /** * {@inheritdoc} */ public function activate(Composer $composer, IOInterface $io) { $this->handler = new Handler($composer, $io); } /** * {@inheritdoc} */ public static function getSubscribedEvents() { return array( ScriptEvents::POST_CREATE_PROJECT_CMD => 'configureProject', ScriptEvents::POST_INSTALL_CMD => 'configureProject', ScriptEvents::POST_UPDATE_CMD => 'configureProject', ); } /** * Configure project event callback. * * @param \Composer\Script\Event $event * The event that triggered the call of this function. */ public function configureProject(Event $event) { $this->handler->configureProject($event); } /** * Script callback for putting in composer scripts to configure the project. * * @param \Composer\Script\Event $event * The event that triggered the call of this function. */ public static function config(Event $event) { $handler = new Handler($event->getComposer(), $event->getIO()); $handler->configureProject($event, TRUE); } }