/** * Event handler for composer package events * * @param \Composer\EventDispatcher\Event $event */ public static function handle($event) { try { $operation = $event->getOperation(); if (method_exists($operation, 'getPackage')) { $installedPackage = $operation->getPackage(); } elseif (method_exists($operation, 'getTargetPackage')) { $installedPackage = $operation->getTargetPackage(); } else { return; } } catch (\Exception $e) { return; } $rootExtra = $event->getComposer()->getPackage()->getExtra(); $extra = $installedPackage->getExtra(); if (isset($extra['bolt-assets'])) { $type = $installedPackage->getType(); $pathToPublic = $rootExtra['bolt-web-path']; // Get the path from extensions base through to public $destParts = [getcwd(), $pathToPublic, 'extensions', 'vendor', $installedPackage->getName(), $extra['bolt-assets']]; $dest = realpath(join(DIRECTORY_SEPARATOR, $destParts)); if ($type === 'bolt-extension' && isset($extra['bolt-assets'])) { $sourceParts = [getcwd(), 'vendor', $installedPackage->getName(), $extra['bolt-assets']]; $source = join(DIRECTORY_SEPARATOR, $sourceParts); self::mirror($source, $dest); } } }
/** * getPluginComposerData * * @param Event $event * * @return mixed * @throws \Exception */ protected function getPluginComposerData(Event $event) { $extra = $event->getComposer()->getPackage()->getExtra(); if (!isset($extra['xpressengine-plugin']['path'])) { throw new \Exception('xpressengine-installer: extra > xpressengine-plugin > path is needed.'); } $path = $extra['xpressengine-plugin']['path']; $this->path = $path; if (!file_exists($path)) { throw new \Exception("file [{$path}] not exists."); } return json_decode(file_get_contents($path), true); }