Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / consolidation / annotated-command / src / Hooks / Dispatchers / OptionsHookDispatcher.php
1 <?php
2
3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
4
5 use Symfony\Component\Console\Command\Command;
6 use Consolidation\AnnotatedCommand\AnnotatedCommand;
7 use Consolidation\AnnotatedCommand\AnnotationData;
8 use Consolidation\AnnotatedCommand\Hooks\HookManager;
9 use Consolidation\AnnotatedCommand\Hooks\OptionHookInterface;
10
11 /**
12  * Call hooks
13  */
14 class OptionsHookDispatcher extends HookDispatcher implements OptionHookInterface
15 {
16     public function getOptions(
17         Command $command,
18         AnnotationData $annotationData
19     ) {
20         $hooks = [
21             HookManager::PRE_OPTION_HOOK,
22             HookManager::OPTION_HOOK,
23             HookManager::POST_OPTION_HOOK
24         ];
25         $optionHooks = $this->getHooks($hooks, $annotationData);
26         foreach ($optionHooks as $optionHook) {
27             $this->callOptionHook($optionHook, $command, $annotationData);
28         }
29         $commandInfoList = $this->hookManager->getHookOptionsForCommand($command);
30         if ($command instanceof AnnotatedCommand) {
31             $command->optionsHookForHookAnnotations($commandInfoList);
32         }
33     }
34
35     protected function callOptionHook($optionHook, $command, AnnotationData $annotationData)
36     {
37         if ($optionHook instanceof OptionHookInterface) {
38             return $optionHook->getOptions($command, $annotationData);
39         }
40         if (is_callable($optionHook)) {
41             return $optionHook($command, $annotationData);
42         }
43     }
44 }