<?php namespace Knuckles\Scribe\Tools; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; class ErrorHandlingUtils { public static function dumpExceptionIfVerbose(\Throwable $e): void { if (Globals::$shouldBeVerbose) { self::dumpException($e); return; } [$firstFrame, $secondFrame] = $e->getTrace(); try { ['file' => $file, 'line' => $line] = $firstFrame; } catch (\Exception $_) { ['file' => $file, 'line' => $line] = $secondFrame; } $exceptionType = get_class($e); $message = $e->getMessage(); $message = "$exceptionType in $file at line $line: $message"; ConsoleOutputUtils::error($message); ConsoleOutputUtils::error('Run this again with the --verbose flag to see the full stack trace.'); } public static function dumpException(\Throwable $e): void { $output = new ConsoleOutput(OutputInterface::VERBOSITY_VERBOSE); $handler = new \NunoMaduro\Collision\Handler(new \NunoMaduro\Collision\Writer(null, $output)); $handler->setInspector(new \Whoops\Exception\Inspector($e)); $handler->setException($e); $handler->handle(); } }