7833903f59449ea2c1290f5f3bdf613e63b6296b
[yaffs-website] / vendor / drupal-composer / drupal-scaffold / src / Plugin.php
1 <?php
2
3 namespace DrupalComposer\DrupalScaffold;
4
5 use Composer\Script\Event;
6 use Composer\Plugin\CommandEvent;
7 use Composer\Composer;
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;
16
17 /**
18  * Composer plugin for handling drupal scaffold.
19  */
20 class Plugin implements PluginInterface, EventSubscriberInterface, Capable {
21
22   /**
23    * @var \DrupalComposer\DrupalScaffold\Handler
24    */
25   protected $handler;
26
27   /**
28    * {@inheritdoc}
29    */
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);
36   }
37
38   /**
39    * {@inheritdoc}
40    */
41   public function getCapabilities() {
42     return array(
43       'Composer\Plugin\Capability\CommandProvider' => 'DrupalComposer\DrupalScaffold\CommandProvider',
44     );
45   }
46
47   /**
48    * {@inheritdoc}
49    */
50   public static function getSubscribedEvents() {
51     return array(
52       PackageEvents::POST_PACKAGE_INSTALL => 'postPackage',
53       PackageEvents::POST_PACKAGE_UPDATE => 'postPackage',
54       ScriptEvents::POST_UPDATE_CMD => 'postCmd',
55       PluginEvents::COMMAND => 'cmdBegins',
56     );
57   }
58
59   /**
60    * Command begins event callback.
61    *
62    * @param \Composer\Plugin\CommandEvent $event
63    */
64   public function cmdBegins(CommandEvent $event) {
65     $this->handler->onCmdBeginsEvent($event);
66   }
67
68   /**
69    * Post package event behaviour.
70    *
71    * @param \Composer\Installer\PackageEvent $event
72    */
73   public function postPackage(PackageEvent $event) {
74     $this->handler->onPostPackageEvent($event);
75   }
76
77   /**
78    * Post command event callback.
79    *
80    * @param \Composer\Script\Event $event
81    */
82   public function postCmd(Event $event) {
83     $this->handler->onPostCmdEvent($event);
84   }
85
86   /**
87    * Script callback for putting in composer scripts to download the
88    * scaffold files.
89    *
90    * @param \Composer\Script\Event $event
91    *
92    * @deprecated since version 2.5.0, to be removed in 3.0. Use the command
93    *   "composer drupal:scaffold" instead.
94    */
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();
101   }
102
103 }