GrumPHP\Runner\TaskRunner::runTask PHP Method

runTask() private method

private runTask ( GrumPHP\Task\TaskInterface $task, GrumPHP\Task\Context\ContextInterface $context ) : GrumPHP\Runner\TaskResultInterface
$task GrumPHP\Task\TaskInterface
$context GrumPHP\Task\Context\ContextInterface
return GrumPHP\Runner\TaskResultInterface
    private function runTask(TaskInterface $task, ContextInterface $context)
    {
        try {
            $this->eventDispatcher->dispatch(TaskEvents::TASK_RUN, new TaskEvent($task, $context));
            $result = $task->run($context);
        } catch (PlatformException $e) {
            $result = TaskResult::createNonBlockingFailed($task, $context, $e->getMessage());
        } catch (RuntimeException $e) {
            $result = TaskResult::createFailed($task, $context, $e->getMessage());
        }
        if (!$result instanceof TaskResultInterface) {
            throw RuntimeException::invalidTaskReturnType($task);
        }
        if (!$result->isPassed() && !$this->grumPHP->isBlockingTask($task->getName())) {
            $result = TaskResult::createNonBlockingFailed($result->getTask(), $result->getContext(), $result->getMessage());
        }
        if (!$result->isPassed()) {
            $e = new RuntimeException($result->getMessage());
            $this->eventDispatcher->dispatch(TaskEvents::TASK_FAILED, new TaskFailedEvent($task, $context, $e));
            return $result;
        }
        $this->eventDispatcher->dispatch(TaskEvents::TASK_COMPLETE, new TaskEvent($task, $context));
        return $result;
    }