Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers;
|
Chris@0
|
4
|
Chris@0
|
5 use Consolidation\AnnotatedCommand\Hooks\HookManager;
|
Chris@0
|
6 use Consolidation\AnnotatedCommand\AnnotationData;
|
Chris@0
|
7 use Consolidation\AnnotatedCommand\Hooks\InitializeHookInterface;
|
Chris@0
|
8 use Symfony\Component\Console\Command\Command;
|
Chris@0
|
9 use Symfony\Component\Console\Input\InputInterface;
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Call hooks
|
Chris@0
|
13 */
|
Chris@0
|
14 class InitializeHookDispatcher extends HookDispatcher implements InitializeHookInterface
|
Chris@0
|
15 {
|
Chris@0
|
16 public function initialize(
|
Chris@0
|
17 InputInterface $input,
|
Chris@0
|
18 AnnotationData $annotationData
|
Chris@0
|
19 ) {
|
Chris@0
|
20 $hooks = [
|
Chris@0
|
21 HookManager::PRE_INITIALIZE,
|
Chris@0
|
22 HookManager::INITIALIZE,
|
Chris@0
|
23 HookManager::POST_INITIALIZE
|
Chris@0
|
24 ];
|
Chris@0
|
25 $providers = $this->getHooks($hooks, $annotationData);
|
Chris@0
|
26 foreach ($providers as $provider) {
|
Chris@0
|
27 $this->callInitializeHook($provider, $input, $annotationData);
|
Chris@0
|
28 }
|
Chris@0
|
29 }
|
Chris@0
|
30
|
Chris@0
|
31 protected function callInitializeHook($provider, $input, AnnotationData $annotationData)
|
Chris@0
|
32 {
|
Chris@0
|
33 if ($provider instanceof InitializeHookInterface) {
|
Chris@0
|
34 return $provider->initialize($input, $annotationData);
|
Chris@0
|
35 }
|
Chris@0
|
36 if (is_callable($provider)) {
|
Chris@0
|
37 return $provider($input, $annotationData);
|
Chris@0
|
38 }
|
Chris@0
|
39 }
|
Chris@0
|
40 }
|