Example #1
0
 /**
  * @return array
  */
 private function getOptions()
 {
     if (!count($this->options)) {
         $this->options = ComposerService::getOptions($this->getComposer());
     }
     return $this->options;
 }
Example #2
0
 /**
  * @param BaseEvent $event
  */
 private static function baseEventDispatcher(BaseEvent $event)
 {
     static $_scripts = array();
     if ($event instanceof PackageEvent) {
         $event = new AliasPackageEvent($event);
     }
     if ($event instanceof AliasPackageEvent) {
         $operation = $event->getAliasOf()->getOperation();
         if ($operation instanceof UpdateOperation) {
             $package = $operation->getTargetPackage();
         } else {
             $package = $operation->getPackage();
         }
         $options = ComposerService::getOptions($event->getComposer());
         if ($package->getType() != $options['type']) {
             //return;
         }
         $extra = $package->getExtra();
         $delayedEvents = array('post-package-install', 'post-package-update');
         if (is_array($extra) && isset($extra[$options['type']])) {
             $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
             $extraScripts = static::combineScripts($extra, $options['type'], $vendorDir . DIRECTORY_SEPARATOR . $package->getName());
             if (count($extraScripts)) {
                 if (isset($extraScripts[$event->getName()])) {
                     $scripts = $extraScripts[$event->getName()];
                     foreach ($scripts as $script) {
                         if (in_array($event->getName(), $delayedEvents)) {
                             $_scripts[$event->getName()][] = array('script' => $script, 'event' => $event);
                         } elseif (is_callable($script)) {
                             $className = substr($script, 0, strpos($script, '::'));
                             $methodName = substr($script, strpos($script, '::') + 2);
                             $className::$methodName($event);
                         }
                     }
                 }
             }
         }
     } elseif (in_array($event->getName(), array('post-install-cmd', 'post-update-cmd'))) {
         foreach ($_scripts as $eventName => $scripts) {
             foreach ($scripts as $data) {
                 if (is_callable($data['script'])) {
                     $className = substr($data['script'], 0, strpos($data['script'], '::'));
                     $methodName = substr($data['script'], strpos($data['script'], '::') + 2);
                     $className::$methodName($data['event']);
                 }
             }
         }
     }
 }