vendor/symfony/maker-bundle/src/Event/ConsoleErrorSubscriber.php line 30
- <?php
- /*
- * This file is part of the Symfony MakerBundle package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Bundle\MakerBundle\Event;
- use Symfony\Bundle\MakerBundle\Exception\RuntimeCommandException;
- use Symfony\Component\Console\ConsoleEvents;
- use Symfony\Component\Console\Event\ConsoleErrorEvent;
- use Symfony\Component\Console\Event\ConsoleTerminateEvent;
- use Symfony\Component\Console\Style\SymfonyStyle;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- /**
- * Prints certain exceptions in a pretty way and silences normal exception handling.
- *
- * @author Ryan Weaver <ryan@knpuniversity.com>
- */
- final class ConsoleErrorSubscriber implements EventSubscriberInterface
- {
- private bool $setExitCode = false;
- public function onConsoleError(ConsoleErrorEvent $event): void
- {
- if (!$event->getError() instanceof RuntimeCommandException) {
- return;
- }
- // prevent any visual logging from appearing
- $event->stopPropagation();
- // prevent the exception from actually being thrown
- $event->setExitCode(0);
- $this->setExitCode = true;
- $io = new SymfonyStyle($event->getInput(), $event->getOutput());
- $io->error($event->getError()->getMessage());
- }
- public function onConsoleTerminate(ConsoleTerminateEvent $event): void
- {
- if (!$this->setExitCode) {
- return;
- }
- // finally set a non-zero exit code
- $event->setExitCode(1);
- }
- public static function getSubscribedEvents(): array
- {
- return [
- ConsoleEvents::ERROR => 'onConsoleError',
- ConsoleEvents::TERMINATE => 'onConsoleTerminate',
- ];
- }
- }