123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- declare(strict_types = 1);
- namespace Fgm\Drupal\Composer;
- use Composer\Composer;
- use Composer\EventDispatcher\EventSubscriberInterface;
- use Composer\IO\IOInterface;
- use Composer\Plugin\Capability\Capability;
- use Composer\Plugin\Capability\CommandProvider;
- use Composer\Plugin\Capable;
- use Composer\Plugin\PluginInterface;
- use Composer\Script\Event as ScriptEvent;
- use Composer\Script\ScriptEvents;
- /**
- * Class Builder is the Composer plugin entry point.
- *
- * @package Fgm\Drupal\Composer
- */
- class Builder implements Capable, Capability, EventSubscriberInterface, PluginInterface {
- const NAME = "composer_builder";
- /**
- * The currently running Composer instance.
- *
- * @var \Composer\Composer
- */
- protected $composer;
- /**
- * The Composer I/O.
- *
- * @var \Composer\IO\IOInterface
- */
- protected $io;
- /**
- * {@inheritdoc}
- *
- * Available events:
- *
- * - Composer\Installer\InstallerEvents::*
- * -> Composer\Installer\InstallerEvent
- * - Composer\Installer\PackageEvents::* -> Composer\Installer\PackageEvent
- * - Composer\Installer\PluginEvents::INIT -> Composer\EventDispatcher\Event
- * - Composer\Installer\PluginEvents::COMMAND -> Composer\Plugin\CommandEvent
- * - Composer\Installer\PluginEvents::PRE_FILE_DOWNLOAD
- * -> Composer\Plugin\PreFileDownloadEvent
- * - Composer\Script\ScriptEvents::* -> Composer\Script\Event
- */
- public static function getSubscribedEvents() {
- return [
- ScriptEvents::POST_INSTALL_CMD => 'onScriptEvent',
- ScriptEvents::POST_UPDATE_CMD => 'onScriptEvent',
- ];
- }
- /**
- * Apply plugin modifications to Composer.
- *
- * @param \Composer\Composer $composer
- * The currently running Composer instance.
- * @param \Composer\IO\IOInterface $io
- * The Composer I/O.
- */
- public function activate(Composer $composer, IOInterface $io) {
- $this->composer = $composer;
- $this->io = $io;
- }
- /**
- * Composer plugin API: describe the plugin capabilities.
- */
- public function getCapabilities() {
- return [
- CommandProvider::class => BuilderCommandProvider::class,
- ];
- }
- /**
- * Event callback: run build:settings on post-install|update only.
- *
- * @param \Composer\Script\Event $event
- * The subscribed event triggering this callback.
- *
- * @throws \Exception
- */
- public function onScriptEvent(ScriptEvent $event) {
- if (in_array($event->getName(), [
- ScriptEvents::POST_INSTALL_CMD,
- ScriptEvents::POST_UPDATE_CMD,
- ])) {
- // FIXME without an argument, the command should build all templates.
- // $buildCommand = new BuildSettingsCommand($event->getName());
- // $buildCommand->run(new ArgvInput([]), new ConsoleOutput());
- }
- }
- }
|