annotate vendor/consolidation/annotated-command/src/Hooks/Dispatchers/OptionsHookDispatcher.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
Chris@0 4
Chris@0 5 use Symfony\Component\Console\Command\Command;
Chris@0 6 use Consolidation\AnnotatedCommand\AnnotatedCommand;
Chris@0 7 use Consolidation\AnnotatedCommand\AnnotationData;
Chris@0 8 use Consolidation\AnnotatedCommand\Hooks\HookManager;
Chris@0 9 use Consolidation\AnnotatedCommand\Hooks\OptionHookInterface;
Chris@0 10
Chris@0 11 /**
Chris@0 12 * Call hooks
Chris@0 13 */
Chris@0 14 class OptionsHookDispatcher extends HookDispatcher implements OptionHookInterface
Chris@0 15 {
Chris@0 16 public function getOptions(
Chris@0 17 Command $command,
Chris@0 18 AnnotationData $annotationData
Chris@0 19 ) {
Chris@0 20 $hooks = [
Chris@0 21 HookManager::PRE_OPTION_HOOK,
Chris@0 22 HookManager::OPTION_HOOK,
Chris@0 23 HookManager::POST_OPTION_HOOK
Chris@0 24 ];
Chris@0 25 $optionHooks = $this->getHooks($hooks, $annotationData);
Chris@0 26 foreach ($optionHooks as $optionHook) {
Chris@0 27 $this->callOptionHook($optionHook, $command, $annotationData);
Chris@0 28 }
Chris@0 29 $commandInfoList = $this->hookManager->getHookOptionsForCommand($command);
Chris@0 30 if ($command instanceof AnnotatedCommand) {
Chris@0 31 $command->optionsHookForHookAnnotations($commandInfoList);
Chris@0 32 }
Chris@0 33 }
Chris@0 34
Chris@0 35 protected function callOptionHook($optionHook, $command, AnnotationData $annotationData)
Chris@0 36 {
Chris@0 37 if ($optionHook instanceof OptionHookInterface) {
Chris@0 38 return $optionHook->getOptions($command, $annotationData);
Chris@0 39 }
Chris@0 40 if (is_callable($optionHook)) {
Chris@0 41 return $optionHook($command, $annotationData);
Chris@0 42 }
Chris@0 43 }
Chris@0 44 }