82 lines
2.2 KiB
PHP
82 lines
2.2 KiB
PHP
<?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();
|
|
}
|
|
}
|