Mercurial > hg > isophonics-drupal-site
view vendor/consolidation/annotated-command/src/Hooks/Dispatchers/StatusDeterminerHookDispatcher.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line source
<?php namespace Consolidation\AnnotatedCommand\Hooks\Dispatchers; use Consolidation\AnnotatedCommand\ExitCodeInterface; use Consolidation\AnnotatedCommand\Hooks\HookManager; use Consolidation\AnnotatedCommand\Hooks\StatusDeterminerInterface; /** * Call hooks */ class StatusDeterminerHookDispatcher extends HookDispatcher implements StatusDeterminerInterface { /** * Call all status determiners, and see if any of them * know how to convert to a status code. */ public function determineStatusCode($result) { // If the result (post-processing) is an object that // implements ExitCodeInterface, then we will ask it // to give us the status code. if ($result instanceof ExitCodeInterface) { return $result->getExitCode(); } $hooks = [ HookManager::STATUS_DETERMINER, ]; // If the result does not implement ExitCodeInterface, // then we'll see if there is a determiner that can // extract a status code from the result. $determiners = $this->getHooks($hooks); foreach ($determiners as $determiner) { $status = $this->callDeterminer($determiner, $result); if (isset($status)) { return $status; } } } protected function callDeterminer($determiner, $result) { if ($determiner instanceof StatusDeterminerInterface) { return $determiner->determineStatusCode($result); } if (is_callable($determiner)) { return $determiner($result); } } }