3 namespace DrupalComposer\DrupalScaffold;
5 use Composer\Script\Event;
6 use Composer\Plugin\CommandEvent;
8 use Composer\EventDispatcher\EventSubscriberInterface;
9 use Composer\Installer\PackageEvent;
10 use Composer\Installer\PackageEvents;
11 use Composer\IO\IOInterface;
12 use Composer\Plugin\Capable;
13 use Composer\Plugin\PluginEvents;
14 use Composer\Plugin\PluginInterface;
15 use Composer\Script\ScriptEvents;
18 * Composer plugin for handling drupal scaffold.
20 class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
23 * @var \DrupalComposer\DrupalScaffold\Handler
30 public function activate(Composer $composer, IOInterface $io) {
31 // We use a separate PluginScripts object. This way we separate
32 // functionality and also avoid some debug issues with the plugin being
33 // copied on initialisation.
34 // @see \Composer\Plugin\PluginManager::registerPackage()
35 $this->handler = new Handler($composer, $io);
41 public function getCapabilities() {
43 'Composer\Plugin\Capability\CommandProvider' => 'DrupalComposer\DrupalScaffold\CommandProvider',
50 public static function getSubscribedEvents() {
52 PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
53 PackageEvents::POST_PACKAGE_UPDATE => 'postPackage',
54 ScriptEvents::POST_UPDATE_CMD => 'postCmd',
55 PluginEvents::COMMAND => 'cmdBegins',
60 * Command begins event callback.
62 * @param \Composer\Plugin\CommandEvent $event
64 public function cmdBegins(CommandEvent $event) {
65 $this->handler->onCmdBeginsEvent($event);
69 * Post package event behaviour.
71 * @param \Composer\Installer\PackageEvent $event
73 public function postPackage(PackageEvent $event) {
74 $this->handler->onPostPackageEvent($event);
78 * Post command event callback.
80 * @param \Composer\Script\Event $event
82 public function postCmd(Event $event) {
83 $this->handler->onPostCmdEvent($event);
87 * Script callback for putting in composer scripts to download the
90 * @param \Composer\Script\Event $event
92 * @deprecated since version 2.5.0, to be removed in 3.0. Use the command
93 * "composer drupal:scaffold" instead.
95 public static function scaffold(Event $event) {
96 @trigger_error('\DrupalComposer\DrupalScaffold\Plugin::scaffold is deprecated since version 2.5.0 and will be removed in 3.0. Use "composer drupal:scaffold" instead.', E_USER_DEPRECATED);
97 $handler = new Handler($event->getComposer(), $event->getIO());
98 $handler->downloadScaffold();
99 // Generate the autoload.php file after generating the scaffold files.
100 $handler->generateAutoload();