36 lines
1.1 KiB
PHP
36 lines
1.1 KiB
PHP
<?php
|
|
namespace Robo\Collection;
|
|
|
|
use Consolidation\AnnotatedCommand\Hooks\ProcessResultInterface;
|
|
use Consolidation\AnnotatedCommand\CommandData;
|
|
use Robo\Contract\TaskInterface;
|
|
use Robo\Result;
|
|
|
|
/**
|
|
* The collection process hook is added to the annotation command
|
|
* hook manager in Runner::configureContainer(). This hook will be
|
|
* called every time a command runs. If the command result is a
|
|
* \Robo\Contract\TaskInterface (in particular, \Robo\Collection\Collection),
|
|
* then we run the collection, and return the result. We ignore results
|
|
* of any other type.
|
|
*/
|
|
class CollectionProcessHook implements ProcessResultInterface
|
|
{
|
|
/**
|
|
* @param \Robo\Result|\Robo\Contract\TaskInterface $result
|
|
* @param \Consolidation\AnnotatedCommand\CommandData $commandData
|
|
*
|
|
* @return null|\Robo\Result
|
|
*/
|
|
public function process($result, CommandData $commandData)
|
|
{
|
|
if ($result instanceof TaskInterface) {
|
|
try {
|
|
return $result->run();
|
|
} catch (\Exception $e) {
|
|
return Result::fromException($result, $e);
|
|
}
|
|
}
|
|
}
|
|
}
|