diff --git a/apps/files_external/lib/Command/Verify.php b/apps/files_external/lib/Command/Verify.php index 80ba831e6f5cc..cd8f586ce8ea0 100644 --- a/apps/files_external/lib/Command/Verify.php +++ b/apps/files_external/lib/Command/Verify.php @@ -14,15 +14,21 @@ use OCA\Files_External\NotFoundException; use OCA\Files_External\Service\GlobalStoragesService; use OCP\AppFramework\Http; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Files\StorageNotAvailableException; +use OCP\Log\BeforeMessageLoggedEvent; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; class Verify extends Base { + /// formatting tags for the various log levels + public const FORMATTING = ['comment', 'comment', 'comment', 'error', 'error']; + public function __construct( protected GlobalStoragesService $globalService, + protected IEventDispatcher $eventDispatcher, ) { parent::__construct(); } @@ -57,13 +63,36 @@ protected function execute(InputInterface $input, OutputInterface $output): int return Http::STATUS_NOT_FOUND; } + $logMessages = []; + $logListener = null; + if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) { + $logListener = function (BeforeMessageLoggedEvent $event) use (&$logMessages) { + $format = self::FORMATTING[$event->getLevel()]; + $logMessages[] = " - <$format>" . $event->getMessage()['message'] . ""; + }; + $this->eventDispatcher->addListener(BeforeMessageLoggedEvent::class, $logListener); + } + $this->updateStorageStatus($mount, $configInput, $output); + if ($logListener) { + $this->eventDispatcher->removeListener(BeforeMessageLoggedEvent::class, $logListener); + } + $this->writeArrayInOutputFormat($input, $output, [ 'status' => StorageNotAvailableException::getStateCodeName($mount->getStatus()), 'code' => $mount->getStatus(), 'message' => $mount->getStatusMessage() ]); + + if (count($logMessages)) { + $output->writeln(''); + $output->writeln('Messages logged during validation:'); + foreach ($logMessages as $logMessage) { + $output->writeln($logMessage); + } + } + return self::SUCCESS; }